git - git 可以知道你当前的分支是从哪个分支分支出来的吗?

标签 git bash alias

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

例如,如果我从 <branch A> 分支,有没有办法让 git 别名识别它需要从 origin/<branch A> pull 为了同步?

最佳答案

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

这就是方式和原因masterorigin/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/

相关文章:

Git:通过邮件保持项目同步

git - 如何获取谷歌代码存储库的最新快照(不是克隆)

git - Jenkins 中多分支管道的 merge 请求触发器

bash - 将脚本作为另一个脚本的参数传递

mysql - 为特定用户 MySQL 在同一个表中查找日期范围重叠

Git 保留分阶段更改

bash - 男人 grep | grep "color"没有给出结果

D 中的别名对象方法

python - 在 python 的子进程中调用 bash 时缺少别名设置

string - 如何将字符串拆分为变量/参数以传递给另一个脚本?