我想创建一个 git 别名,让我可以从其分支的原始分支同步我的分支。
例如,如果我从 分支<branch A>,有没有办法让 git 别名识别它需要origin/<branch A>从中拉取才能同步?
Git 不知道也不关心分支名称(例如master或feature-31415或ourDevelopmentProcessUsesReallyLongBranchNamesBecauseTheyHateUs)是如何产生的。它所知道或关心的是该名称存在并且当前指向某个特定的提交。尽管如此,每个分支都可以有一个上游设置。
git merge如果您在不带参数的情况下运行,则您配置的上游将被用作合并参数<upstream>;git rebase如果您在不带参数的情况下运行,则将其用作参数,等等。通常,上游master是origin/master。您可以将sbr(短分支)设置为origin/anotherLongNameBecauseTheyWantToReplaceUsWithRobots设置为其上游,并且不必再次键入。
设置origin/zorg为 的上游evil:
git branch --set-upstream-to=origin/zorg evil
Run Code Online (Sandbox Code Playgroud)
并删除上游:
git branch --unset-upstream evil
Run Code Online (Sandbox Code Playgroud)
上游设置只是一个由两部分组成的字段:
$ git config --get branch.master.remote
origin
$ git config --get branch.master.merge
master
Run Code Online (Sandbox Code Playgroud)
这就是其上游master的方式和原因origin/master。1 上游也会自动使用git status,并且是 的默认推送目标,并且是应用到分支名称git push的结果。@{upstream}这一切都内置于 Git 中。问题是每个分支只能获得一个上游。如果这就是您所需要的,那就太好了。
可以添加自己的配置项,eg:2
$ git config branch.master.zorblax giant-space-eel
Run Code Online (Sandbox Code Playgroud)
但 Git 本身不会使用它。尽管如此,Git 仍然是一个巨大的工具集,而不仅仅是一个预先简化的解决方案,它永远不能用于开发人员直接想象之外的任何用途:如果您愿意,您可以编写自己的使用该zorblax设置的代码。
1您可以将一个本地分支设置为另一个本地分支的上游。从配置角度来说,这会将remote部分设置为.,然后 Git 的其余部分会在必要时忽略该部分,例如,以@{upstream}符号方式显示设置。
remote当设置为远程名称时,这里还有一个隐藏的细节与分支名称映射有关。这是因为该设置的原始值merge早于遥控器的发明。不过,通常情况下这没有什么区别。
2总统佐布拉克斯。注意漫画的日期,十多年前。不过,我怀疑红色按钮文本是较新的......