git push命令中的用户名和密码


107

可以克隆git仓库,在命令中指定用户名和密码。例:

git clone https://username:password@myrepository.biz/file.git

推送时是否还可以指定用户名和密码?这样,例如,运行git push origin --all将输出要求输入密码的信息。我想要一个命令。

(我知道设置键和其他解决方案的能力,但是我想知道是否有一种方法可以仅使用一个命令继续使用用户名和密码。)我正在Windows 8.1上运行Git Bash。


您是否找到解决方案git commit
南武

Answers:


157

是的,你可以

git push https://username:password@myrepository.biz/file.git --all

在这种情况下https://username:password@myrepository.biz/file.git更换origingit push origin --all

要查看更多选项git push,请尝试git help push


13
请注意,这会将用户名和密码以纯文本格式存储在git配置中。

4
您可以使用密码哈希代替普通密码
Vasiliy Vanchuk

1
@VasiliyVanchuk您使用哪种哈希?这对Github有用吗?
Raphi

14
如果密码包含@怎么办?
拉胡尔·夏尔马

1
建议使用' ',将完整路径git push 'https://username:password@myrepository.biz/file.git'


3

根据Git文档git push命令的最后一个参数可以是您要推送到的存储库:

    git push [--all | --mirror | --tags] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
             [--repo=<repository>] [-f | --force] [--prune] [-v | --verbose] [-u | --set-upstream]
             [<repository> [<refspec>…]]

并且该repository参数可以是URL或远程名称。

因此,您可以像在clone命令示例中一样指定用户名和密码。


2
似乎合适,但是当我添加带有用户名和密码作为参数的git repo时,例如,它仍然提示输入密码。
2015年

3

当您使用类似的URL时,Git不会存储密码。相反,它将只存储用户名,因此下次仅需要提示您输入密码即可。如手册中所述,要存储密码,您应该使用外部凭据助手。对于Windows,可以将Windows凭据存储区用于Git。默认情况下,该辅助程序也包含在Windows的GitHub中

使用它时,您的密码将自动被记住,因此您只需要输入一次即可。因此,当您克隆时,将要求您输入密码,然后与遥控器的每次进一步通信都不会再次提示您输入密码。取而代之的是,凭据帮助程序将向Git提供身份验证。

当然,这仅适用于通过https进行身份验证;对于ssh访问(git@host.com/repository.git),您可以使用SSH密钥,也可以使用SSH密钥ssh-agent(如果使用plink,则可以记住PutTY的选美)。


4
“我知道设置密钥和其他解决方案的能力,但是我想知道是否有一种方法可以仅使用一个命令来继续使用用户名和密码。”
Marvin

@Marvin我知道这句话,但是我不只是想提交一个两句答案,所以我提供了其他用户的信息,这些用户可能不仅仅对通过HTTPS连接感兴趣。

4
不过,它仍然无法回答他的问题。
Marvin 2015年

3

有可能,但是,在git 2.9.3(2016年8月)之前,a git push将打印回推回克隆的仓库时使用的完整URL。
那将包括您的用户名和密码!

但是,没有更多:见犯68f3c07(2016年7月20日),并提交882d49c通过(2016年7月14日),杰夫·金(peff
(由Junio C gitsterHamano合并--71076e1号提交中,2016年8月8日)

push:匿名化状态输出中的URL

提交47abd85(抓取:在存储用户名之前先从网址中删除用户名,2009-04-17,Git 1.6.4),教导抓取操作来匿名化URL。
这样做的主要目的是避免将密码粘贴在合并提交的消息中,但副作用是,我们也避免将其打印到stderr。

推送方没有合并提交问题,但可能应避免将它们打印到stderr。我们可以重用相同的匿名化功能。

请注意,要实现此目的,凭据将必须出现在命令行或git config文件中,这两种都不是特别安全。
因此,人们应该改用凭证帮助程序,这使该问题消失了。

但这不是没有理由为出于某种原因最终使用嵌入在URL中的凭据的用户改善情况的借口。


1

对于任何有特殊字符密码问题的人,只需省略密码,它会提示您输入密码:

git push https://YOUR_GIT_USERNAME@github.com/YOUR_GIT_USERNAME/yourGitFileName.git
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.