git - 是否有对上游分支的引用?

问题描述

自从我开始使用功能分支以来,我可以要求差异:

git diff upstream-branch...

但它要求我知道上游分支是什么。是否有上游分支的参考,无论它是什么,而我事先不知道或不必挖掘它?比如,我不知道:

git diff UPSTREAM...

解决方法

作为一个班轮:git diff @{u}...


一个分支的上游由两部分组成,两者都可以通过git config进行设置和检索。 远程 部分很简单,因为给定一个名为 B 的分支,它是 branch.B.remote。如果您使用 git config,后半部分会困难得多。1幸运的是,由于 Git 版本 1.8 左右,@{upstream} 后缀适用于解析分支名称的所有内容:

foo@{upstream}

是分支 foo 的上游。 @{u}@{upstream} 的简写,独立的意思是 HEAD@{upstream}

要获取上游的符号名称,如果您需要,请使用 git rev-parse --symbolic-full-namegit rev-parse --abbrev-ref。请注意,如果没有为当前或给定分支设置上游,您将收到来自 git rev-parse 的错误。


1它是 branch.B.merge,但这必须通过给定遥控器的 fetch = 映射运行才能找到正确的远程跟踪名称。也就是说,假设分支 brbranch.br.remote = rbranch.br.merge = xyz。然后,您必须通过 refs/heads/xyz 规则运行 remote.r.fetch 以得出与远程 xyz 上的 r 相对应的远程跟踪名称。没有命令行命令可以为您执行此操作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...