git push 命令中的用户名和密码

Username and password in command for git push

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

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

是否可以在推送时同时指定用户名和密码?因此,例如,运行 git push origin --all 将输出要求输入密码的信息。我想要一个命令。

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

当您使用这样的 URL 时,

Git 不会存储密码。相反,它只会存储用户名,因此下次只需要提示您输入密码即可。如 manual, to store the password, you should use an external credential helper. For Windows, you can use the Windows Credential Store for Git. This helper is also included by default in GitHub for Windows.

中所述

使用时会自动记住您的密码,只需输入一次即可。因此,当您克隆时,系统会要求您输入密码,然后每次与遥控器的进一步通信都不会再次提示您输入密码。相反,凭据助手将提供 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 documentationgit 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 在推回克隆的 repo 时使用。
这将包括您的用户名和密码!

但仅此而已:参见 commit 68f3c07 (20 Jul 2016), and commit 882d49c (14 Jul 2016) by Jeff King (peff)
(由 Junio C Hamano -- gitster -- in commit 71076e1 合并,2016 年 8 月 8 日)

push: anonymize URL in status output

Commit 47abd85 (fetch: Strip usernames from url's before storing them, 2009-04-17, Git 1.6.4) taught fetch to anonymize URLs.
The primary purpose there was to avoid sticking passwords in merge-commit messages, but as a side effect, we also avoid printing them to stderr.

The push side does not have the merge-commit problem, but it probably should avoid printing them to stderr. We can reuse the same anonymizing function.

Note that for this to come up, the credentials would have to appear either on the command line or in a git config file, neither of which is particularly secure.
So people should be switching to using credential helpers instead, which makes this problem go away.

But that's no excuse not to improve the situation for people who for whatever reason end up using credentials embedded in the URL.

我使用了以下格式

git 推送 <a href="https://username:password@myrepository.biz/file.git" rel="noreferrer">https://username:password@myrepository.biz/file.git</a> --all

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

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

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

6.5 年后,多因素授权几乎无处不在,您可能会使用令牌。对于 github,请参阅 Creating a personal access token