首页 > 学院 > 开发设计 > 正文

GitHub in Linux/Ubuntu的配置安装

2019-11-08 20:12:09
字体:
来源:转载
供稿:网友
最近萌发了使用github的冲动尽管现阶段最大的好处还是将代码保存到了远程因为感觉并不会用到分支等等其他功能的样子

系统版本

$ cat /PRoc/versionlinux version 4.4.0-57-generic (buildd@lgw01-54) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #78-Ubuntu SMP Fri Dec 9 23:50:32 UTC 2016$ lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 16.04.1 LTSRelease: 16.04Codename: xenial

安装git

$ sudo apt-get install git[sudo] username 的密码:正在读取软件包列表... 完成正在分析软件包的依赖关系树 正在读取状态信息... 完成 git 已经是最新版 (1:2.7.4-0ubuntu1)。升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 205 个软件包未被升级。

生成ssh密钥

$ ssh-keygen -t rsa -C "your_email@email.com"Generating public/private rsa key pair.Enter file in which to save the key (/home/username/.ssh/id_rsa): gitkeyEnter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in gitkey.Your public key has been saved in gitkey.pub.The key fingerprint is:SHA256:YbbASU/RttVk7K4Ks/C0v/y+V7HGIYHoJEw1weZuqJw "your_email@email.com"The key's randomart image is:"an image made up with characters"这里我生成的key取名为gitkey 这样在你用户的根目录(/home/username)下会有一个gitkey.pub的文本文件,里面的内热就是公钥,需要用来添加到你在github网站上的账户里面还会有一个gitkey的文件,也就是私钥如果在“Enter passphrase (empty for no passphrase): ”输入了一个短语,这个是用来对私钥加密的,即访问gitkey文件的时候会提示你输入这个密码。显然我是加了密的,所有才会提示“Enter same passphrase again: ”然后需要把这两个文件cp到/home/username/.ssh/目录下,终端直接操作(为啥咧?因为这样才能让ssh找到。其实还是因为我“擅自”输入了文件名导致ssh没有将密钥直接生成在其默认的目录下)如果直接一路按回车下来的化,会简单很多 默认会在/home/username/.ssh/目录下生成id_rsa和id_rsa.pub文件,即私钥和公钥哎找不到这个目录?隐藏的啦( 即前缀了一个 . )。直接在终端中输入路径访问就可以

设置github账户

到github网站上登录你的帐号settings 里的 SSH and GPG keysNew SSH key (一个绿色的按钮)Title即标题,最好取一个和当前终端设备(系统)相关的标题方便管理,比如我在window下的密钥起名为“GitHub for windows”,在这里就取名为“GitHub for Linux/Ubuntu”Key即公钥,也就是前文中gitkey.pub(默认版:/home/username/.ssh/id_rsa.pub)的内容

测试ssh密钥

$ ssh -T git@github.com若出现Permission denied (publickey). 个人的解决方法是把这gitkey和gitkey.pub这两个文件cp到了/home/username/.ssh/目录下如果生成密钥那一步是一路回车下来的,就没发生这个问题若出现Hi YourGitHubName! You’ve successfully authenticated, but GitHub does not provide shell access. 就可以了

简单使用git

举一个简单的例子

1.首先在github网站上创建一个repository,起名叫test

空空如也但是有提示Quick setup — if you’ve done this kind of thing beforeor | HTTPS | SSH | git@github.com:username/test.git即使用git通过ssh来访问的时候利用git@github.com:YourGitHubName/test.git这个url来访问你建立的repository

2.终端移动到你的新项目目录下

$ pwd/home/username/文档/test$ lstest test.c

3.使用git init初始化git仓库

$ git init初始化空的 Git 仓库于 /home/username/文档/test/.git/

4.使用git add .将所有改动添加到本地仓库

$ git add .

5.使用git commit -m “commit instruction”来编写提交说明

$ git commit -m "firt commit"[master (根提交) 2c5bcb7] firt commit 2 files changed, 7 insertions(+) create mode 100755 test create mode 100644 test.c

6.使用git remote add origin git@github.com:YourGitHubName/test.git

尽管还不知道为什么,不过不这样干没办法提交。目前个人的理解是将远程的repository映射到本地的一个origin上,通过origin进行上传。日后有更准确的理解会修正。

7.使用git push origin master上传到远程上

$ git push origin master对象计数中: 4, 完成.Delta compression using up to 4 threads.压缩对象中: 100% (4/4), 完成.写入对象中: 100% (4/4), 2.61 KiB | 0 bytes/s, 完成.Total 4 (delta 0), reused 0 (delta 0)To git@github.com:YourGitHubName/test.git * [new branch] master -> master

8.稍作修改

$ echo asd > asd.txt$ lsasd.txt test test.c

9.提交更新的版本

$ git add .$ git commit -m "second commit"[master c314f60] second commit 1 file changed, 1 insertion(+) create mode 100644 asd.txt$ git push origin master对象计数中: 3, 完成.Delta compression using up to 4 threads.压缩对象中: 100% (2/2), 完成.写入对象中: 100% (3/3), 297 bytes | 0 bytes/s, 完成.Total 3 (delta 0), reused 0 (delta 0)To git@github.com:YourGitHubName/test.git 2c5bcb7..c314f60 master -> master

10.下载项目到本地(我这里先删掉了原本的test目录)

$ cd ..$ rm -r testrm:是否删除有写保护的普通文件 'test/.git/objects/3d/ede79373fd15383d243b9a99f2340111ef2242'? yrm:是否删除有写保护的普通文件 'test/.git/objects/c3/14f60b58bcd36894c41e37d62b1c228b19021f'? yrm:是否删除有写保护的普通文件 'test/.git/objects/87/fae94b03488f770ed94496418ff75531904612'? yrm:是否删除有写保护的普通文件 'test/.git/objects/af/1fa17d50347d23f2a0562b31dca44748ab5858'? yrm:是否删除有写保护的普通文件 'test/.git/objects/d7/2af314604e3b98e5c108efeb4815c64d2e267b'? yrm:是否删除有写保护的普通文件 'test/.git/objects/73/9735de9ca4e5ad57f2353ae65a858c4142319b'? yrm:是否删除有写保护的普通文件 'test/.git/objects/2c/5bcb7a3b3c768d1007b3f54c33db405fd2f8f0'? y$ cd testbash: cd: test: 没有那个文件或目录$ git clone git@github.com:YourGitHubName/test.git正克隆到 'test'...remote: Counting objects: 7, done.remote: Compressing objects: 100% (6/6), done.remote: Total 7 (delta 0), reused 7 (delta 0), pack-reused 0接收对象中: 100% (7/7), 完成.检查连接... 完成。$ cd test$ lsasd.txt test test.c

更多git的使用

暂无
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表