自从我开始使用功能分支以来,我可以询问差异:
git diff upstream-branch...
但是它要求我知道上游分支是什么。是否有上游分支的引用,无论它是什么,而我事先不知道或必须挖掘它?就像,我不知道:
git diff UPSTREAM...
最佳答案
作为单行:git diff @{u}...
分支的上游由两部分组成,这两部分都可以通过 git config
设置和检索。 。 remote 部分很简单,因为给定了一个名为 B
的分支。 ,它是 branch.<em>B</em>.remote
。如果你使用git config
,后半部分会困难得多。 .1 幸运的是,从 Git 版本 1.8 左右开始,@{upstream}
后缀适用于解析分支名称的所有内容:
foo@{upstream}
是分支foo
的上游。 @{u}
是 @{upstream}
的简写,以及独立的,意味着 HEAD@{upstream}
.
要获取上游的符号名称(如果您需要的话),请使用 git rev-parse --symbolic-full-name
或git rev-parse --abbrev-ref
。请注意,如果当前或给定分支没有上游设置,您将收到 git rev-parse
的错误。 .
1这是 branch.<em>B</em>.merge
,但这必须通过 fetch =
运行给定远程的映射以查找正确的远程跟踪名称。也就是说,假设分支 br
有branch.br.remote = r
和branch.br.merge = xyz
。然后您必须运行 refs/heads/xyz
通过remote.r.fetch
规则来得出与 xyz
相对应的远程跟踪名称远程r
。没有命令行命令可以为您执行此操作。
关于git - 是否有对上游分支的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67679541/