一个GitHub newbie的自白:
一、安装git
1.查看是否已经安装:
$ git
2.没有安装则:
$ sudo apt-get install git
3.在主文件夹中新建一文件夹mygit:
$ mkdir mygit
4.进入mygit,初始化版本库:
$ cd mygit
$ git init
5.完善个人信息(your_name和your_email自己对号入座,下同):
$ git config --global user.name "your_name"
$ git config --global user.email "your_email"
6.注册GitHub:略
二、创建SSH密钥
1.创建SSH keys:
$ ssh-keygen -t rsa -C "your_email"
回车后会提示输入密码,该密码用来加密私钥(也即是id_rsa)?回车。
在~/.ssh文件夹中(如果不在,那就找到它,再移动过来)出现两个文件:id_rsa和id_rsa.pub(如123456和123456.pub)
其中id_rsa是私钥,id_rsa.pub是公钥。
2.添加SSH keys:
登录GitHub->Account Settings->SSH keys->Add SHH keys :
Title随便填,Key则要将id_rsa.pub的内容全部复制粘贴过来(注意,绝对不能更改任何内容),之后点击Add key即可。
3.测试连接:
$ ssh -T git@github.com
如果连接成功会提示:"Hi ×××! You've successfully authenticated, ..."
否则,可能会出现:"Permission denied (publickey). fatal:the remote end hung up unexpectedly"原因可能有:
1).id_rsa和id_rsa.pub没有移动到~/.ssh文件夹中;
2).复制粘贴id_rsa.pub文件内容时出错,可能不小心修改了,也可能是编辑器的原因,尝试一下用其他编辑器打开再复制粘贴。
三、上传文件到GitHub
1.先在GitHub上创建库:
New repository ->(略)
2.在mygit文件夹中新建文件:
$ cd mygit
mygit$ touch your_file //your_file换成你自己的文件名,之后打开添加内容...
注:“//”后面只是在这里的说明,下同。
3.创建别名:
mygit$ git remote add [your_name]git@github.com:[你的库名]
$后面的语句其实就是Next steps模块的倒数第二句,只需将你的"别名(如:abc,下同)"替换origin,这样以后就可以用"abc"来表示git@github.com:后面那一串地址。
删除别名的话:git remote rm abc
4.上传文件:
$ cd mygit
mygit$ git add . //这里的点表示当前文件夹
mygit$ git commit -a -m //提交到本地库命令
mygit$ git push abc master //master表示库的主分支
之后按照提示输入yes和私钥,如此则完成了上传工作。
git打开的这个默认编辑器可能不是自己惯用的编辑器。那么可以使用下面的命令来改变git所打开的编辑器。
$git config --global core.editor vim
执行完这条命令后,可以去查看git的配置文件.gitconfig,该配置文件在家目录下面。
$ cat .gitconfig
[core]
editor = vim
给Ubuntu下的Git添加颜色
在版本库的SSH方式和HTTPS方式是不同的,具体来说就是url信息的不同,但是,实际的认证机制也是不同的。当建立了本机密钥之后,使用ssh方式实际上是不需要再次认证的,而https则每次需要输入密码 。《Help.GitHub - SSH key passphrases》里也说了用SSH更方便更安全,不需要去输入长长的密码。
我去看了下repo目录下的.git/config,果然,我的url是HTTPS形式。
1 2 3 | |
因为远程版本库的url是HTTPS,估计是我git clone的时候用HTTPS链接造成的
所以问题就出在这了,每次都很不方便,都要输入用户名和密码。
为了使用SSH公钥的方式认证,我把config的url改成下面这样
1 2 3 | |
【注:该笔记只是个人学习过程中的一些总结,而且主要参考了:http://teliute.org/mix/Tegit/index.html,对此表示感谢该作者的分享】
转载自:https://blog.lowstz.org/posts/2011/11/23/why-git-push-require-username-password-github/