git可以知道您当前分支从哪个分支分支出来?

时间:2017-02-03 17:47:01

标签: git bash alias

我想创建一个git别名,让我可以从分支的原始分支中同步我的分支。

例如,如果我从<branch A>分支,是否有一种方法可以让git别名识别它需要从origin/<branch A>拉出来才能同步?

1 个答案:

答案 0 :(得分:4)

Git不知道或关心分支名称(如masterfeature-31415ourDevelopmentProcessUsesReallyLongBranchNamesBecauseTheyHateUs)是如何产生的。所有它知道或关心的是名称存在并且当前指向某个特定的提交。尽管如此,每个分支都可以有一个上游设置。

如果运行不带参数的git merge,则将配置的上游作为merge参数,或者如果运行不带参数的<upstream>参数,则将其用作git rebase参数, 等等。通常,master的上游为origin/master。您可以将sbr(短分支)设置为origin/anotherLongNameBecauseTheyWantToReplaceUsWithRobots作为其上游,而不必再次键入。

origin/zorg设为evil的上游:

git branch --set-upstream-to=origin/zorg evil

并删除上游:

git branch --unset-upstream evil

上游设置只是一个由两部分组成的字段:

$ git config --get branch.master.remote
origin
$ git config --get branch.master.merge
master

这是master origin/master作为其上游的方式和原因。 1 上游也由git status自动使用,并且是默认推送目标对于git push,是将@{upstream}应用于分支名称的结果。这都是内置于Git。问题是每个分支只有一个上游。如果这就是你所需要的,那就很好。

您可以添加自己的配置项,例如: 2

$ git config branch.master.zorblax giant-space-eel

但Git本身没有任何东西可以使用它。尽管如此,Git是一个巨大的工具集,不仅仅是一种预先消化的解决方案,它永远无法用于开发人员的直接想象之外的任何事情:您可以编写使用{{1}的您自己的代码设置,如果你愿意的话。

1 您可以将本地分支设置为另一个本地分支的上游。在配置方面,这会将zorblax部分设置为remote,然后Git的其余部分会在必要时忽略,例如,以符号方式显示.设置。

@{upstream}设置为远程名称时,此处还有隐藏的详细信息与分支名称映射有关。这是因为remote设置的原始值早于遥控器的发明。但通常这没有区别。

2 President Zorblax。注意漫画的日期,十多年前。我怀疑红色按钮文字是新的,但是......