可以克隆一个git存储库,在命令中指定用户名和密码。例如:
git clone https://username:password@myrepository.biz/file.git
推送时是否也可以指定用户名和密码?因此,例如,运行git push origin --all
将输出要求输入密码。我希望在一个命令中使用它。
(我知道能够设置密钥和其他解决方案,但我想知道是否有办法只使用一个命令继续使用用户名和密码。)我在Windows 8.1上运行Git Bash。 / p>
答案 0 :(得分:106)
是的,你可以做到
git push https://username:password@myrepository.biz/file.git --all
https://username:password@myrepository.biz/file.git
会替换origin
中的git push origin --all
要查看git push
的更多选项,请尝试git help push
答案 1 :(得分:6)
我使用了以下格式
git push https://username:password@myrepository.biz/file.git --all
,如果您的密码或用户名包含@,请将其替换为%40
答案 2 :(得分:6)
对于任何有特殊字符密码问题的人,只需忽略密码,它会提示您输入密码:
git push https://YOUR_GIT_USERNAME@github.com/YOUR_GIT_USERNAME/yourGitFileName.git
答案 3 :(得分:3)
当您使用这样的网址时,Git不会存储密码。相反,它只会存储用户名,因此下次只需要提示您输入密码。如manual中所述,要存储密码,您应使用外部凭据帮助程序。对于Windows,您可以使用Windows Credential Store for Git。默认情况下,此助手也包含在GitHub for Windows。
中使用它时,系统会自动记住您的密码,因此您只需输入一次即可。因此,当您克隆时,系统会要求您输入密码,然后与遥控器的每次进一步通信都不会再次提示您输入密码。相反,凭证助手将为Git提供身份验证。
这当然仅适用于通过https进行身份验证;对于ssh访问(git@host.com/repository.git
),您使用SSH密钥和使用ssh-agent
可以记住的密钥(如果您使用plink,则使用PuTTY的选美)。
答案 4 :(得分:3)
根据Git documentation,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
参数可以是网址或远程名称。
因此,您可以使用与clone
命令示例相同的方式指定用户名和密码。
答案 5 :(得分:3)
有可能但是,在git 2。9。3(2016年8月)之前,git push
会打印推回克隆回购时使用的完整网址。
那将包括您的用户名和密码!
但不多了:commit 68f3c07见commit 882d49c(2016年7月20日)和Jeff King (peff
)(2016年7月14日){。{3}}。
(由Junio C Hamano -- gitster
--合并于commit 71076e1,2016年8月8日)
push
:在状态输出中匿名化URLCommit 47abd85 (fetch: Strip usernames from url's before storing them, 2009-04-17, Git 1.6.4)教授抓取匿名网址 主要目的是避免在合并提交消息中粘贴密码,但作为副作用,我们也避免将它们打印到stderr。
推送方没有合并提交问题,但可能应该避免将它们打印到stderr 。我们可以重用相同的匿名功能。
请注意,要实现此目的,凭据必须出现在命令行或git配置文件中,这两种文件都不是特别安全。
所以人们应该转而使用凭证助手,而不是 让这个问题消失了。但是,没有理由不改善因任何原因最终使用URL中嵌入的凭据的人的情况。