问题提出
作为程序员,我们肯定会经常跟 GitHub打交道。有了 GitHub ,我们就不用重复去造轮子了。当我们将 GitHub 上的工程通过 git clone 到本地之后,修改完代码后想要 git push 回 GitHub,有时候会一直提示输入用户名及密码,如下图所示:
密码输一次两次还好,但一直要求输入密码,就会大大降低效率,毕竟我们有可能一天会有多次推送。
原因分析
这个问题其实很简单,出现这种情况的根本原因是我们使用了 https 的方式 clone 代码到本地,相应的,也是使用 https 的方式将代码 push 到 GitHub。
如上图所示,默认情况下,在 GitHub 系统上克隆代码的地址采用的是 https 的方式,对于小白而言可能并不明白去修改传输方式,于是一般直接这样 clone 代码:
$ git clone https://github.com/yychuyu/linux-system-programming.git
于是乎,这个问题就会开始出现了。
除了 https 方式,还有一种方式就是采用 ssh 方式,是这样 clone 代码的:
$ git clone git@github.com:yychuyu/linux-system-programming.git
解决方案
为了安全性,采用 https 方式通讯的话就会要求每次重新输入用户名及密码。所以解决办法也很简单,将 https 方式改为 ssh 方式即可。
如果不知道现在采用哪种方式,可以先查询一下:
$ git remote -v
从结果上很明显看到这是采用 https 方式。
如果要把 https 方式改为 ssh 方式,需要先移除旧的 https 的 origin:
$ git remote rm origin
再添加新的 ssh 方式的 origin:
$ git remote add origin git@github.com:yychuyu/linux-system-programming.git
修改完之后,我们还要再确认一下有没修改成功:
可以看到已经成功将 https 方式改为 ssh方式了。
但修改完之后还是没办法直接执行 git push 来推送代码的,需要手动设置一下要跟踪的上游分支。与此同时会自动执行一次git push命令,此时已经不用要求输入用户名及密码啦!
$ git push --set-upstream origin master
在设置的同时,已经自动执行一次 git push 命令,这个时候已经不再要求输入用户名及密码啦,问题完美解决!