【发布时间】:2013-06-28 11:05:10
【问题描述】:
我通常在两个地方工作,并且是 git 新手。我第一次在线创建了一个存储库并将其添加到我的系统中,就像 github 网站告诉的步骤一样。然后我想从另一个地方在同一个存储库上工作,所以我也在我的另一个系统中安装了 git 并执行了以下操作:
创建了一个目录:
然后在那个目录中我做了 git init
之后我做了 git config --global user.name "Name" 和 git config --global user.email "email"
然后我通过从 github 网站中的 HTTPS CLONE URL 选项 获取存储库的地址来添加之前从其他系统创建的相同存储库,如下所示:
git 添加来源https://github.com/myUserName/repoName.git
然后获取我所做的所有存储库数据:
git pull origin master
直到这一切正常,我将所有数据都放到了我的系统上,但是当我对文件进行一些更改并提交更改时,我开始使用命令推回更改:
git push origin master
但我无法推送更改,因为它说 Error: 403 Forbidden
据我说,它给了我这样一条消息,因为它没有要求我输入任何用户名和密码组合,但是当我在我的第一个系统中配置存储库时,它在推送时要求我输入用户名和密码。
在做了一些谷歌之后,我发现我们可以将用户名和密码插入到 .git/config
中的文件中所以我编辑了该文件如下:
之前我的配置文件是这样的:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "recupero"]
url = https://github.com/satyam1990/recupero.git
fetch = +refs/heads/*:refs/remotes/recupero/*
编辑我的配置文件后的样子:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "recupero"]
url = https://Username:myPasswordHere@github.com/satyam1990/recupero.git
fetch = +refs/heads/*:refs/remotes/recupero/*
如上编辑我的配置文件后,我可以推送,但是当我推送更改时,它会立即在我的屏幕上显示我的用户名和密码,我不希望这样。有没有一种方法可以让 git 在我每次 git push 时都向我询问用户名和密码,就像在我之前第一次配置 git 的系统上一样。而且将用户名和密码立即存储在文本文件中也不是一个好习惯。
【问题讨论】:
-
您使用的是两台不同的计算机吗?在这种情况下,您必须将两个 ssh 密钥添加到您的 github 帐户。 github.com/settings/ssh
-
我没有使用 ssh 协议,正如您在我的配置文件中看到的那样,我使用的是 https,是否有必要使用 ssh。
-
据我所知 Github 只支持 ssh 写入 repos。尝试将您的远程网址更改为:ssh://git@github.com:satyam1990/recupero.git
-
@crea1 no https 也非常适合推送。请看下面我的回答。当您在防火墙后面工作时,它比 ssh 更方便,防火墙会阻止 ssh 端口进行外部 http 查询。 GitHub 支持智能 http (github.com/blog/642-smart-http-support)。请参阅stackoverflow.com/a/7073618/6309 和stackoverflow.com/a/7502628/6309 了解更多信息。