git push 之 Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa'
今天尝试把git与GitHub联系起来,方便后续往GitHub上面推送项目。过程中踩了几个坑,记录一下:
一、生成 GitHub--SSH-公钥
1、在git中用命令行 ssh-keygen -t rsa -C 'your email address'
- 文件名称及位置选择默认,enter即可。
- passphrase一定要写,其实可以跳过,但是有密码更安全不是,但就是这个密码,又给自己埋下了坑。
2、拷贝上面的/.ssh/id_rsa.pub到GitHub上,位置见如下截图:
二、设置remote GitHub(坑一):
这个时候,需要在git 上设置remote地址:
SSH : git remote add orgin ssh://github.com:your github account/your repository HTTPS: git remote add orgin https://github.com/your github account/your repository
区分了添加https和ssh两种方式,区别就在于:
ssh:不需要每次提交的时候都输入username和passphrase
https:每次都需要输入一遍username和passphrase。
而我一开始手滑选择了https,导致每次提交都要重新输入密码和用户名,所以后来就切换到了ssh模式下。具体怎么切网上有很多教程,不再赘述。
然后,push想要push的东西即可:
git push -u origin master # -u 只有首次提交的时候需要,后续再次push可以省略
三、开始编写及提交代码(坑二)
仍然每次都需要填写密码:
Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa'。
说好的ssh不需要密码呢??
翻了一些教程,有的说干脆重新设置为无密码,这样就不需要每次都输入了,个人觉得这是个办法,不是最优解。下面把我最后的解法贴下来,这个方法的原理就是托管一个代理替你保存密码,我的系统是centos7.6:
# 1、先打开代理,如果你已经打开,那么直接运行命令2即可: eval $(ssh-agent) #2、输入下面命令,然后再次输入密码即可,大功告成 ssh-add ~/.ssh/id_rsa
至此,我们就可以轻松地提交代码了。
四、另外还有一些小问题,顺手记录下来:
在提交完代码后,会提示这个警告:
warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching'
修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯,
进行如下设置:
git config --global push.default matching
若要不再显示本信息并从现在开始采用新的使用习惯,设置:
git config --global push.default simple
参见 'git help config' 并查找 'push.default' 以获取更多信息。
('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git,
为保持兼容,请用 'current' 代替 'simple' 模式)
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
Gogs: Internal error
Failed to execute git command: exit status 128
error: 无法推送一些引用到 'git@softlab.sdut.edu.cn:daijingxin/addressbook.git'
git push.default设置
这个问题也很容易解决:
# 运行这个命令: git config --global push.default simple # 或者这个命令: git config --global push.default matching #区别在于, 前者只提交你当前所在的分支,而后者会提交本地所有的分支
-
出现警告:Warning:Permanently added the RSA host key for IP address '13.229.188.59' to the list of known hosts.
这个问题出现的原因猜测是因为GitHub是境外网站导致的,不解决没有大碍,但是看着别扭。
# Linux下的修改: vi /etc/hosts insert 13.229.188.59 github.com