显示本地分支 B 没有的本地分支 A 上的提交

Show commits on local branch A that local branch B has not

我已经读到有

$ 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 做错了,我可能犯了一个错误,所以它应该确实有效

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

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

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

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

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

再见,

让我们假设 运行:

git branch

并得到branchAbranchB

我们可以将它们与:

进行比较
git diff branchA..branchB

顺序并不重要,如果您反转 branchB 和 branchA,则加号变为减号,反之亦然。通常较旧的分支在前,但这只是约定

git diff --color-words branchA..branchB

使用此命令,您对使用前一个命令获得的结果会有不同的看法

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

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

希望对您有所帮助,
安东尼奥