我已按照these instructions为github设置SSH密钥。但现在我做的时候
> git pull
Username for 'https://github.com':
在本地计算机上的存储库中,我已经从公共SSH密钥中获取,我仍然需要用户名/密码。我错过了一步吗?
答案 0 :(得分:8)
你需要告诉Git使用SSH协议而不是HTTPS。在GitHub上的存储库页面上,选择Clone or Download
和Use SSH
。您将以git@github.com:<user>/<repo>.git
形式获取SSH协议的URL。
然后在工作树中运行以下命令告诉Git使用此URL而不是当前的URL:
git remote set-url origin git@github.com:<user>/<repo>.git
GitHub Help中也对此进行了解释。
上述方法不会再次克隆存储库,只会更改用于将来本地存储库和GitHub之间同步的通信协议。
或者,您可以使用git remote add <new-remote-name> <url>
然后git pull <new-remote-name>
设置新的遥控器,但Git会将这两个协议作为单独的遥控器进行跟踪,因此我不建议这样做。
答案 1 :(得分:2)
这也可以通过编辑项目的git config文件来完成。使用您喜欢的编辑器打开.git/config
并找到现有的URL:
[remote "origin"]j
url=https://github.com/<usr>/<repo>.git
更改为
[remote "origin"]j
url=git@github.com:<usr>/<repo>.git
我个人觉得这有点容易记住,但有可能变得更加“内部”。
答案 2 :(得分:0)
就我而言,我在 GitHub 上创建了自己的存储库,并希望将文件从本地计算机推送到该存储库。当我想推送代码时,我被要求输入用户名和密码,尽管我已经使用公共 SSH 密钥配置了我的 GitHub 帐户。
我的错误是我添加了带有 https
端点而不是 ssh
端点的遥控器,如下所示:
git remote add origin https://github.com/vagdevik/dummy.git
我通过以下方式解决了这个问题:
(以下几点很重要,因为如果我们直接跳到第3步,它会抛出一个错误,说遥控器已经存在)
.git
:rm -rf .git
git init
git add .
git commit -m "first commit"
https
端点的那个(重要)git remote add origin https://github.com/vagdevik/dummy.git
这一次,我没有被要求输入用户名/密码。
谢谢!