2013-07-01 53 views
1

我通常从两个地方工作,新来git。我第一次在线创建了一个存储库,并将其添加到我的系统中,就像github网站所述的步骤一样。然后,我想从我的其他地方,以便我在其他系统上安装的git太在同一仓库的工作,也做了以下内容:git push说禁止

创建的目录:

然后在该目录中,我没有的git的init

之后,我并混帐配置--global user.name “名称”混帐配置--global user.email “电子邮件”

然后我添加通过获取库的地址早些时候从其他系统创建的同一仓库从HTTPS克隆网址选项在github上的网站为:

git的添加起源https://github.com/myUserName/repoName.git

然后把所有的库数据我做:

的git拉出身主

直到这一切工作正常,我所有得到的数据到我的系统,但磨片NI提出的文件做一些改变,并承诺改变,我开始使用命令逼退变化:

混帐推起源主

但因为它说我没能推的变化错误:403禁止

据我说,它给了我这样一个消息,因为它没有要求我提供任何用户名和密码组合,但它要求我输入用户名和密码,而我在我第一次配置存储库时系统。

的做了一些谷歌我发现我们可以插入用户名和密码到当前文件中的.git /配置

所以我编辑如下该文件后:

早些时候我的配置文件如下像:

[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:[email protected]/satyam1990/recupero.git 
     fetch = +refs/heads/*:refs/remotes/recupero/* 

如上所述编辑我的配置文件后,我能够推送,但是当我推送更改时,它立即显示我的用户名和密码到我的屏幕上,我不希望那样。有没有办法让我可以让git每次都要求我输入用户名和密码我是git push就像我以前的系统那样,我第一次配置git。并且立即在文本文件中存储用户名和密码不是一个好习惯。

+0

这是你使用的两台不同的计算机吗?在这种情况下,您必须将两个ssh密钥添加到您的github帐户。 https://github.com/settings/ssh – crea1

+0

我没有使用ssh协议,因为你可以在我的配置文件中看到,我使用的是https,是否需要使用ssh。 – mSatyam

+0

据我所知Github只支持ssh写回购。尝试将您的远程网址更改为:ssh://[email protected]:satyam1990/recupero.git – crea1

回答

2

是的,您可以将您的凭证存储在$HOME/.netrc file中。

machine github.com 
login <login1> 
password <password1> 

或者你也可以为了使用credential helper到:

+1

为什么它不会要求输入用户名和密码,就像它在我的早期机器上一样。 – mSatyam

+0

@msatyam如果您使用的是“GitHub for Mac”或“GitHub for Windows”的包装器,它可能已经为您创建了'.netrc',或者使用它自己的内部凭证助手。我认为你在第一台机器上使用了https地址以及'origin'('git remote -v')? – VonC

1

通常情况下,您应该使用带有密钥的SSH,如果只是为了让您的密码不在纯文本文件中的特定优点。使用SSH密钥,您可以在每台设备上拥有一个可区分的(本地加密的)密钥,并且永远不必复制它们。

对于https,如果您使用最新的git,它应该询问您的用户名和密码。你甚至可以在你的git URL中添加你的用户名,这样git只会要求输入密码。

但是,如果你能够使用SSH,你应该使用它,因为它更安全,一旦你处理了你的密钥的处理,更方便。

+0

通常,您可以使用ssh或https。你现在有办法完全加密你的https证书。所以它不会比ssh更安全。 *而且*您无需管理ssh密钥,而您*已经拥有* gitHub登录名/密码。 – VonC

+0

(1)加密的'.netrc'是一个特定于git的“黑客”,无法在其他地方使用。 (2)我只有一个github密码,但可以拥有尽可能多的密钥。 (3)我不想将我的单一密码放在我的各种生产箱和工作站上,而没有适当的方法使其失效。一个密钥几乎总是比密码更安全和更好用(尽管可以通过发出设备专用密码来解决一些问题,例如可能通过gmail)。 –

+0

同意。我对一个临时用户的心态做了更多的回答,但对于不同的工作地点,如果可能的话,那么ssh更好。所以+1。除了我不能从我的工作地点使用ssh(ssh port blocked)。 – VonC