【问题标题】:Show commits on local branch A that local branch B has not在本地分支 A 上显示本地分支 B 没有的提交
【发布时间】:2020-03-01 07:50:45
【问题描述】:

我已经读过有

$ git checkout B
$ git cherry -v A

但这对我没有任何作用,我想这(以及其他一些类似的命令,我认为git log B ^A,它确实输出了一些差异,但不知何故没有显示所有不同的提交)仅适用于以下情况B 是 A 的远程跟踪分支。

但是我想比较两个本地分支的提交,我该怎么做呢?

更新: 为了更详细,我尝试了

git log B..A

git log B ^A

但是来自 A 的 HEAD 没有出现,虽然它不在 B 上。

编辑:不知道了,如果我做错了git cherry,我可能犯了一个错误,所以它应该真的有效

【问题讨论】:

  • git cherry 专门用于处理通过git cherry-pick 复制或未复制的提交。鉴于您的主题行中的简单问题,git log B..A 您想要的。如果这不是您想要的,您可能需要阅读 Git 的提交图是如何工作的。注意git log B ^A 表示git log A..Bgit log B..A 可以拼写为git log A ^B。两个点前面的那个取反;最后一个是积极的参考。
  • 如果您感兴趣的提交被或可能已经被复制到不同的提交,具有不同的哈希ID,但具有相同的效果 i> 作为他们的源提交,那么git cherry-pick 是一个有用的工具。要正确描述它,您需要知道提交图是如何工作的。 (你会发现这是 Git 中的一个主题:要使用它,你需要了解图表。)
  • 更多关于图表如何工作的信息——所有这些东西的基本构建块,也包括git merge——请参阅Think Like (a) Git

标签: git branch commit difference


【解决方案1】:

喏,

让我们假设运行:

git branch

得到branchAbranchB

我们可以将它们与:

git diff branchA..branchB

顺序并不重要,如果将分支B 和分支A 颠倒,加号变为减号,反之亦然。通常较旧的分支首先出现,但这只是一个约定

git diff --color-words branchA..branchB

使用此命令,您可以对上一个命令得到的结果有不同的看法

您甚至可以通过以下方式比较选择分支B中最后一次提交的祖先:

git diff branchA..branchB^
git diff branchA..branchB^^

希望对你有帮助,
安东尼诺

【讨论】:

  • git diff,使用这种方式,比较两个提交branchAbranchB中的snapshots。这与git log 非常不同,branchA..branchBbranchA..branchB 一起使用时,首先向您显示来自branchB 尖端的提交(完整的哈希ID 和日志消息),然后显示其父级,然后是它们的父级。父母,依此类推,直到它到达从branchA 到达的任何提交,它没有显示。
  • @torek:是的,我从 OP 的“我想比较两个本地分支的提交”中认为他正在搜索这种比较
【解决方案2】:

如果您想显示从 A 可访问的所有提交,但排除从 B 可访问的提交:

git log A ^B # read: A, but *not* B

或者,更符合 git log 的一般用法:

git log B..A # read: show history from B to A

两个命令的行为是相同的(两个 refspecs 描述了相同的提交)

【讨论】:

  • 谢谢,但我试过了(只是修正了答案中的错字,表明我试过了)
  • 我对您在编辑问题中的评论感到困惑。你说“A的头没有出现,虽然它不在B上”。这是预期的,您在 B 中指定所有提交,而不是在 A 上
  • 参数。现在我明白了。我把它倒过来了。但由于 A 和 B 只是任意的占位符,所以这并不重要。尽管如此,我还是会更新我的答案以交换 A 和 B
  • 你是对的,我要么读错了,要么我的git cherry 命令的来源也是错误的。 git log B..A 是相关的,因为人们可以很容易地记住它“我需要从 B 到 A 的提交是什么”。不知道为什么他们认为git log 语法是好的或必要的。
  • @polynomial_donut 我不明白你的咆哮。语法(正式称为“refspec”)是必需的,以便您可以指定要显示的提交范围。否则你会如何告诉 Git 你想查看/操作哪些提交?
猜你喜欢
  • 2016-03-07
  • 2019-12-06
  • 2019-06-28
  • 2013-03-21
  • 2020-07-30
  • 2013-07-10
  • 2016-10-06
  • 2015-07-24
  • 2012-11-09
相关资源
最近更新 更多