【问题标题】:how to implicitly `git push` from a local branch "X" to "origin/Y"如何从本地分支“X”隐式“git push”到“origin/Y”
【发布时间】:2011-11-26 20:09:32
【问题描述】:

假设你的起源有一个分支,名字长得离谱......

$> git branch -a
* master
  origin/master
  origin/branch-with-a-ridiculously-long-name

当您在本地处理该分支时,您希望给它起一个不那么荒谬的名称,例如 bob

$> git checkout origin/branch-with-a-ridiculously-long-name
$> git checkout -b bob
$> git branch --set-upstream bob origin/branch-with-a-ridiculously-long-name

到了 push 的时候,如果你跑,你能做什么:

$> git checkout bob
$> git push

那么对“bob”的任何本地更改都将发送到“branch-with-a-ridiculously-long-name”,并且不会在 origin 上创建一个名为“bob”的新分支?

我实际上正在寻找一种将git push 隐式扩展到git push origin bob:branch-with-a-ridiculously-long-name 的方法。

我认为设置 git config push.default upstream 是其中的一部分,但我不确定如何处理本地分支名称与远程分支名称不同的事实。

【问题讨论】:

标签: git git-push git-config


【解决方案1】:

最新版本的 git(大多数 2.x 版本)包括在一个命令中设置所有这些配置的选项:

git checkout -b bob origin/branch-with-a-ridiculously-long-name

这会将 bob 的上游设置为正确的远程分支。

或者,如果您已经有本地分支,则可以使用--set-upstream-to 标志:

git checkout bob
git branch --set-upstream-to origin/branch-with-a-ridiculously-long-name

这两个都会正确设置 git config

【讨论】:

    【解决方案2】:

    如果您将 push.default 设置为 upstream(或在 1.7.4.2 之前的 git 版本中设置为 tracking),那么在运行时应该完全符合您的要求:

       git push
    

    ... 或:

       git push origin
    

    您运行的git branch --set-upstream 命令与配置设置相结合,应该可以实现。

    我写了一篇关于this unfortunate asymmetry between git push and git pull的帖子。

    【讨论】:

    • 天哪,我基本上是在解决方案,但我没有意识到!谢谢,马克,push.default 是我需要的秘诀 :)
    【解决方案3】:

    【讨论】:

    • 这是一个非常有创意的解决问题的方法!我希望有一些不错的一阶支持,不涉及手动编辑配置文件,但很高兴知道这一点。谢谢!
    猜你喜欢
    • 2014-05-02
    • 2012-01-05
    • 2020-08-01
    • 2017-04-25
    • 2016-04-12
    • 2016-10-06
    • 1970-01-01
    • 2013-05-09
    • 2021-04-13
    相关资源
    最近更新 更多