我想创建一个 git 别名,让我可以从其分支的原始分支同步我的分支。
例如,如果我从 <branch A>
分支,有没有办法让 git 别名识别它需要从 origin/<branch A>
pull 为了同步?
最佳答案
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 仍然是一个巨大的工具集,而不仅仅是一个预先简化的解决方案,它永远无法用于开发人员直接想象之外的任何用途:您可以使用 zorblax
编写您自己的代码。设置,如果您愿意的话。
1您可以将一个本地分支设置为另一个本地分支的上游。从配置角度来看,这设置了 remote
部分为.
,Git 的其余部分会在必要时忽略它,例如,显示 @{upstream}
象征性地设置。
这里还有一个 stash 的细节与分支名称映射有关,当 remote
时设置为 Remote 的名称。这是因为merge
的原始值设置早于 Remote 的发明。不过,通常这没有什么区别。
2 President Zorblax 。注意漫画的日期,十多年前。不过,我怀疑红色按钮文本是较新的......
关于git - git 可以知道你当前的分支是从哪个分支分支出来的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42030106/