可以使用命令在克隆Git存储库时指定用户名和密码。例如:
git clone https://username:password@myrepository.biz/file.git
那么在推送时是否也可以指定用户名和密码呢?这样,运行git push origin --all
将直接输出要求输入密码。我想在一个命令中完成此操作。
(我知道可以设置密钥等其他解决方案,但我想知道是否有一种方法只需使用一个命令来继续使用用户名和密码。)我在Windows 8.1上运行Git Bash。
是的,你可以这样做:
git push https://username:password@myrepository.biz/file.git --all
在这种情况下,https://username:password@myrepository.biz/file.git
会替换 git push origin --all
中的 origin
。
要查看更多有关 git push
的选项,请尝试 git help push
。
@
字符,会发生什么? - Rahul Sharma' '
包含完整路径,例如: git push 'https://username:password@myrepository.biz/file.git'
- AlikElzin-kilaka我使用以下格式
git push https://username:password@myrepository.biz/file.git --all
如果你的密码或用户名包含 @ ,请将其替换为 %40
urlencode($password)
,这将编码所有特殊字符,而不仅仅是 @
。 - shyammakwana.me如果您在使用具有特殊字符的密码时遇到问题,只需省略密码,它将提示您输入:
git push https://YOUR_GIT_USERNAME@github.com/YOUR_GIT_USERNAME/yourGitFileName.git
YOUR_GIT_USERNAME
改成了你的用户名了吗?如果你不使用github.com,你把它改成了其他什么东西了吗?你把yourGitFileName.git
改成了其他什么东西了吗? - TheTechRobo the Nerd2021年8月13日停用了密码身份验证,您可以使用个人访问令牌来代替。例如以下推送命令:
git push https://<User Name>:<Token>@github.com/<User Name>/<Your Repository>.git
git push
命令的最后一个参数可以是您想要推送到的存储库。请参考Git文档。 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日)和提交882d49c (2016年7月14日),由Jeff King (peff
)进行。
(由Junio C Hamano -- gitster
--合并于提交71076e1,2016年8月8日)
push
: 在状态输出中匿名化URL提交 47abd85(获取:在存储之前从URL中删除用户名,2009-04-17,Git 1.6.4)教授了fetch如何匿名化URL。
主要目的是避免将密码粘贴到合并提交消息中,但副作用是我们也避免将它们打印到stderr中。
推送方面没有合并提交问题,但最好也避免将它们打印到stderr中。我们可以重用相同的匿名化函数。
请注意,为了出现这种情况,凭据必须出现在命令行或git配置文件中,这两者都不是特别安全的。
因此,人们应该切换到使用凭证助手,这样就可以解决这个问题。
但这并不是不改善那些由于某种原因需要使用嵌入式URL凭证的人的情况的借口。
如果您使用此类URL,Git将不会存储密码。相反,它只会存储用户名,因此下一次仅需提示输入密码。如手册中所解释的那样,要存储密码,您应该使用外部的凭证助手。对于Windows系统,您可以使用Git的Windows凭证存储库。该助手还包括在GitHub for Windows中。
使用它时,您的密码将自动被记住,因此您只需要输入一次。因此,当您克隆时,需要输入密码,然后与远程进行的每次通信都不会再提示输入密码。相反,凭证助手将向Git提供验证信息。
当然,这仅适用于通过https进行身份验证;对于ssh访问(git@host.com/repository.git
),您需要使用SSH密钥,并且可以使用ssh-agent
(或者如果您正在使用plink,则使用PuTTY的pageant)来记住这些密钥。
我使用GitCredentialManager解决了这个问题。
它是一个用于git的终端实用程序。在运行git push
时,它会打开提示框以提供凭据。
请在他们的GitHub Repo上找到更多详细信息。
https://github.com/GitCredentialManager/git-credential-manager
它易于安装和使用。
git commit
的解决方案吗? - Nam Vu