Answers:
是的,你可以
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
@
怎么办?
' '
,将完整路径git push 'https://username:password@myrepository.biz/file.git'
我用下面的格式
git push https://username:password@myrepository.biz/file.git --all
并且如果您的密码或用户名包含@,请将其替换为%40
urlencode($password)
可以编码所有特殊字符@
。
根据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
命令示例中一样指定用户名和密码。
当您使用类似的URL时,Git不会存储密码。相反,它将只存储用户名,因此下次仅需要提示您输入密码即可。如手册中所述,要存储密码,您应该使用外部凭据助手。对于Windows,可以将Windows凭据存储区用于Git。默认情况下,该辅助程序也包含在Windows的GitHub中。
使用它时,您的密码将自动被记住,因此您只需要输入一次即可。因此,当您克隆时,将要求您输入密码,然后与遥控器的每次进一步通信都不会再次提示您输入密码。取而代之的是,凭据帮助程序将向Git提供身份验证。
当然,这仅适用于通过https进行身份验证;对于ssh访问(git@host.com/repository.git
),您可以使用SSH密钥,也可以使用SSH密钥ssh-agent
(如果使用plink,则可以记住PutTY的选美)。
有可能,但是,在git 2.9.3(2016年8月)之前,a git push
将打印回推回克隆的仓库时使用的完整URL。
那将包括您的用户名和密码!
但是,没有更多:见犯68f3c07(2016年7月20日),并提交882d49c通过(2016年7月14日),杰夫·金(peff
)。
(由Junio C gitster
Hamano合并--在71076e1号提交中,2016年8月8日)
push
:匿名化状态输出中的URL提交47abd85(抓取:在存储用户名之前先从网址中删除用户名,2009-04-17,Git 1.6.4),教导抓取操作来匿名化URL。
这样做的主要目的是避免将密码粘贴在合并提交的消息中,但副作用是,我们也避免将其打印到stderr。推送方没有合并提交问题,但可能应避免将它们打印到stderr。我们可以重用相同的匿名化功能。
请注意,要实现此目的,凭据将必须出现在命令行或git config文件中,这两种都不是特别安全。
因此,人们应该改用凭证帮助程序,这使该问题消失了。但这不是没有理由为出于某种原因最终使用嵌入在URL中的凭据的用户改善情况的借口。
git commit
?