我想创建一个git别名,让我可以从分支的原始分支中同步我的分支。
例如,如果我从<branch A>
分支,是否有一种方法可以让git别名识别它需要从origin/<branch A>
拉出来才能同步?
答案 0 :(得分:4)
Git不知道或关心分支名称(如master
或feature-31415
或ourDevelopmentProcessUsesReallyLongBranchNamesBecauseTheyHateUs
)是如何产生的。所有它知道或关心的是名称存在并且当前指向某个特定的提交。尽管如此,每个分支都可以有一个上游设置。
如果运行不带参数的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。注意漫画的日期,十多年前。我怀疑红色按钮文字是新的,但是......