命令 git push 的用户名和密码

可以克隆一个 git 存储库,在命令中指定用户名和密码:

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

是否可以在推送时同时指定用户名和密码?这样,例如,运行 git push origin --all将输出询问密码。我只要一个命令。

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

292998 次浏览

当您使用这样的 URL 时,Git 不会存储密码。相反,它只是存储用户名,所以它只需要在下次提示您输入密码。正如在 手动操作中解释的那样,要存储密码,应该使用外部 证书助手。对于 Windows,可以使用 用于 Git 的 Windows 凭据存储。在 适用于 Windows 的 GitHub中默认情况下也包含这个助手。

使用时,您的密码将自动被记住,所以您只需要输入一次。因此,当你克隆时,你会被要求输入密码,然后每次与远程通信都不会再提示你输入密码。相反,凭据助手将向 Git 提供身份验证。

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

是的,你可以

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

根据 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参数可以是 网址或远程名称。

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

这是可能的,但是在 git 2.9.3(2016年8月)之前,git push会打印复制回购时使用的完整 URL。
包括你的用户名和密码!

但不再是这样: 见 犯罪现场调查,第三季,第7集(2016年7月20日)和 提交882d49c(2016年7月14日) by 杰夫 · 金(peff)
(由 朱尼奥 · C · 哈马诺 gitster于2016年8月8日在 犯罪,第七季,第1集合并)

push: 在状态输出中匿名 URL

提交47abd85(提取: 存储 URL 之前从 URL 中提取用户名,2009-04-17,Git 1.6.4) 教会提取匿名 URL。
其主要目的是避免在合并提交消息中粘贴密码,但作为副作用,我们也避免将它们打印到 stderr。

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

注意,为了实现这一点,凭证必须出现在命令行或 git 配置文件中,这两者都不是特别安全的。
因此,应该用户转而使用凭证助手 解决这个问题。

但是,对于那些出于某种原因最终使用嵌入在 URL 中的凭证的人来说,这不能成为不改善这种情况的借口。

我使用了下面的格式

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

如果您的密码或用户名包含@,则将其替换为% 40

对于任何有特殊字符密码问题的人,只要省略密码,它就会提示你:

git push https://YOUR_GIT_USERNAME@github.com/YOUR_GIT_USERNAME/yourGitFileName.git

6.5年后,多因素授权几乎无处不在,您可能会使用令牌

对密码认证的支持在2021年8月13日被移除。您可以使用个人访问令牌代替。比如下面的推送命令:

git push https://<User Name>:<Token>@github.com/<User Name>/<Your Repository>.git

链接到如何创建访问令牌

我用 GitCredentialManager解决了这个问题

它是 git 的终端实用程序。当运行 git push时,它会打开一个提示符来提供凭据。 请找到他们的 GitHub 回购的更多细节。 Https://github.com/gitcredentialmanager/git-credential-manager

它易于安装和使用。