用于git push的用户名和密码
可以克隆一个git仓库,在命令中指定用户名和密码。 例:
git clone https://username:password@myrepository.biz/file.git
推送时是否也可以指定用户名和密码? 所以,例如,运行git push origin --all
都会输出要求input密码。 我想要一个命令。
(我知道设置密钥和其他解决scheme的能力,但是我想知道是否有一种方法,只需使用一个命令就可以继续使用用户名和密码)。我在Windows 8.1上运行Git Bash。
是的,你可以做
git push https://username:password@myrepository.biz/file.git --all
在这种情况下, https://username:password@myrepository.biz/file.git
replacegit push origin --all
要看到更多的git push
选项,请尝试git help push
当你使用这样的URL时,Git将不会存储密码。 相反,它只会存储用户名,所以下次只需要提示你input密码。 如手册中所述,要存储密码,您应该使用外部凭证助手 。 对于Windows,您可以使用Windows Credential Store for Git 。 GitHub for Windows默认也包含这个帮助器。
使用时,您的密码将被自动记住,所以您只需input一次即可。 所以当你克隆的时候,你会被要求input你的密码,然后再与遥控器进行任何进一步的通信都不会再次提示你input密码。 相反,证书助手将为Git提供authentication。
这当然只适用于通过https进行身份validation; 对于ssh访问( git@host.com/repository.git
),您使用SSH密钥和那些您可以使用ssh-agent
(如果您使用plink,则为PuTTY的选美)。
根据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
命令的例子中一样指定用户名和密码。
这是可能的,但是,在git 2.9.3(2016年8月)之前, git push
将打印推回到克隆回购的完整url。
这将包括您的用户名和密码!
但没有更多:请参阅提交68f3c07 (2016年7月20日),并提交由Jeff King( peff
)的 882d49c (2016年7月14日) 。
(由Junio C gitster
– gitster
– 承诺71076e1 ,2016年8月8日)
push
:在状态输出中匿名URL提交47abd85(提取:从URL中删除用户名之前,存储他们,2009年4月17日,Git 1.6.4)教取回取匿名url。
这样做的主要目的是避免在合并提交消息中插入密码,但是作为副作用,我们也避免将它们打印到stderr。推侧没有合并提交问题,但可能应该避免将它们打印到stderr 。 我们可以重复使用相同的匿名function。
请注意,为了这一点,凭证将不得不出现在命令行或gitconfiguration文件中,这两者都不是特别安全。
所以人们应该改用使用凭证助手来解决这个问题。但是,对于不pipe出于什么原因最终使用embedded在URL中的凭证的人来说,这都不是理由。