我有branch1和branch2,我想要某种形式:
git branch1 isahead branch2
这将显示branch1是否具有branch2没有的提交(并且可能还指定了那些提交)。 我无法检查差异原因branch2是否超出branch1(已提交branch1没有)。
有办法吗? 我查看git diff并找不到任何内容
我认为"前方"或"后方"一词仅适用于将本地分支与远程分支进行比较。 我不确定使用比较两个分支的术语是否有意义,因为它可能有完全不同的历史。
您可以使用
git log branch2..branch1
如果branch1在branch2之前没有提交,则输出将为空。
您也可以使用git rev-list --count branch2..branch1
这将显示未来的提交数量
资源
两者都很棒 - 第二个更适合脚本。 谢谢!
--right-only(或任何相关选项)仅适用于三点对称差异语法。 这里没有效果,可以简单地省略。
谢谢你,我根据你的评论编辑了答案;)
matthiasbe的答案很好用于许多目的,但对于脚本,只要你的Git不是太古老,1,你通常会想要使用:
if git merge-base --is-ancestor commit-specifier-1 commit-specifier-2; then
# commit specifier #1 is an ancestor of commit specifier 2
else
# commit specifier #1 is NOT an ancestor of commit specifier 2
fi
作为测试。这是因为git merge-base --is-ancestor将结果编码为退出状态,因此您无需运行单独的测试来将数字与某些内容进行比较。
请注意,一个分支尖端可能在另一个分支尖端之前和之后:
$ git rev-list --left-right --count stash-exp...master
1 6473
这里,指定的提交都不是另一个的祖先。但是,鉴于这些其他说明符:
$ git rev-list --left-right --count master...origin/master
0 103
我们看到master严格地落后于origin/master,所以:
$ git merge-base --is-ancestor master origin/master && echo can fast-forward
can fast-forward
从查看git rev-list --count origin/master..master的零计数得到的答案是一样的:
$ git rev-list --count origin/master..master
0
在Git版本1.8.0中引入了1 git merge-base --is-ancestor。一些系统仍在使用Git 1.7 ...
你已经得到了答案。所以我会添加更多内容。
git cherry命令可用于执行此操作。
git cherry branch1 branch2
这将列出branch2中的提交,但不包括branch1中的提交。如果需要,可以使用-v标志使其与哈希一起打印提交消息。
git cherry -v branch1 branch2
https://git-/docs/git-cherry
希望能帮助到你 :)