【问题标题】:git pull and git push in one gogit pull 和 git push 一口气
【发布时间】:2012-06-24 18:13:55
【问题描述】:

是否可以在一个 git 命令中使用 git pullgit push

git pull & git push 之类的语法并不完全适合我,因为我需要向服务器提供两次凭据:拉取和推送。

所以我想知道,有什么解决方法吗?我认为应该是这样,因为开发人员在推送本地更改之前拉取远程源是很常见的情况。

编辑:我使用的是 Windows 7/x64,msysgit-utf8 1.7.9

【问题讨论】:

  • 如果没有合并冲突会很危险吗?
  • 协议是什么?有一些方法可以在每个会话中只提供一次凭据
  • 别这样。设置公钥身份验证或更改协议,以便您可以。
  • @SandroMunda 我没有遇到你所说的情况,但我相信如果 git 在工作文件夹处于故障状态(实际上是合并状态)时允许推送,这是一个严重的错误。
  • @CharlesB 我已经使用 SSH 和 HTTPS 进行了检查,它要求我提供两次密码。我使用的是 Windows 7,msysgit-utf8 1.7.9

标签: git dvcs


【解决方案1】:

首先,你可以配置 Git 使用的 _netrc 文件,这里是相关问题:Git - How to use .netrc file on windows to save user and password 然后可以为命令配置别名:

git config alias.publish '!git pull && git push'`

只需输入:git publish

【讨论】:

  • 我可以使用@符号作为分隔符将登录名添加到存储库的 URL。我可以将我的密码添加到.git/config。但我不想存储我的密码。我喜欢被问到密码。但只有一次!
  • 您不需要在 .git/config 中添加登录名和密码。这是错误的方式。如果您使用 ssh 连接,那么最好使用公钥。对于通过凭据进行 https 连接,您可以在 windows 中使用 _netrc 文件,注意文件名中的下划线而不是点。
  • 如果你想实现一个自定义逻辑来询问密码,那么你可以使用core.askpass并为登录设置一个别名:git config url.https://user@host/.insteadof https://host/
  • 不错!我添加了 --global 标志以使其成为全球性的。
【解决方案2】:

在这种情况下,我建议做一些快速而肮脏的事情。这可能不是最有效的方法,但我会在 vim 中创建一个带有命令的 bash 脚本并运行,考虑到命令的简单程度。然后,您可以在每次想要同时拉取和推送时打开该文件。

您所要做的就是创建文件,输入您要编写的两行命令,然后在您想执行它们时在命令行中输入该文件名。

同样,这不是最有效的方法,而是快速修复。

【讨论】:

  • 它不能解决双重身份验证的情况......这就是问题所在。输入git pull & git push 不会打扰我。我不想输入两次密码,因为我认为应该对此进行优化。但是我还没找到……
【解决方案3】:

你最好使用SSH,但如果你不能使用SSH,你可以随时使用windows凭据存储来保存你的密码,这样你就不需要填写两次了:

git config --global credential.helper wincred

来源:Git documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-09
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2018-06-29
    • 2012-09-07
    相关资源
    最近更新 更多