700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > linux查看git是否运行 关于linux:使用脚本检查git分支是否领先于另一个

linux查看git是否运行 关于linux:使用脚本检查git分支是否领先于另一个

时间:2022-03-09 12:41:23

相关推荐

linux查看git是否运行 关于linux:使用脚本检查git分支是否领先于另一个

我有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

希望能帮助到你 :)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。