关于git bash:git push命令中的用户名和密码

Username and password in command for git push

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

git clone https://username:[email protected]/file.git

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

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


是的,你可以

git push https://username:[email protected]/file.git --all

在这种情况下,将https://username:[email protected]/file.git替换为git push origin --all中的origin

要查看git push的更多选项,请尝试git help push


我使用以下格式

git push https://username:[email protected]/file.git --all

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


可能但在git 2.9.3(2016年8月)之前,git push将打印出推回克隆的存储库时使用的完整URL。
那将包括您的用户名和密码!

但没有更多内容:请参阅Jeff King(peff)的commit 68f3c07(2016年7月20日)和882d49c(2016年7月14日)。
(由Junio C Hamano合并-gitster-在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文档,git push命令的最后一个参数可以是您要推送到的存储库:

1
2
3
    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访问([email protected]/repository.git),请使用SSH密钥,而使用ssh-agent可以记住的密钥(如果使用plink,则可以使用PuTTY选美)。