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

标签 git git-branch upstream-branch

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

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-namegit rev-parse --abbrev-ref 。请注意,如果当前或给定分支没有上游设置,您将收到 git rev-parse 的错误。 .


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

关于git - 是否有对上游分支的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67679541/

相关文章:

git - 我如何在上游执行 git status ?

git - 如何用jgit做 "git grep -e <pattern>"?

Git忽略除某个目录的所有子目录中的某种类型的所有文件?

git - 通过portablegit使用github时如何使用指定的 key ?

git - 如何解决 git status "Unmerged paths:"?

git - 我可以在过去的提交中 merge future 的分支,而不 merge 它们之间的共享提交,或者不进行樱桃选择吗?

git - 在 Azure Devops 中创建分支时对作者的说明

Git 分支名称与操作系统相关吗?