Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在git中,我如何知道分支是否已经被重设到master上?_Git_Branching And Merging_Git Rebase - Fatal编程技术网

在git中,我如何知道分支是否已经被重设到master上?

在git中,我如何知道分支是否已经被重设到master上?,git,branching-and-merging,git-rebase,Git,Branching And Merging,Git Rebase,这非常类似于,但是关于检查重定基址的代码。在我目前正在处理的存储库中,似乎有几个功能分支在其更改重新基于master之后被搁置。对于我来说,在删除分支之前检查是否已执行此操作的最佳方法是什么 关于该分支的大多数建议都建议使用分支上最后一次更改的SHA id键来检查它是否存在于master中。我可以看出,这是确保合并的最佳方式,但当您重新设置此SHA的基础时,它会发生更改 我有一个答案,我也将张贴,但我想知道,如果人们认为有更好的选择 在主分支的日志中通过功能分支的最后一条提交消息进行搜索,效果非

这非常类似于,但是关于检查重定基址的代码。在我目前正在处理的存储库中,似乎有几个功能分支在其更改重新基于master之后被搁置。对于我来说,在删除分支之前检查是否已执行此操作的最佳方法是什么

关于该分支的大多数建议都建议使用分支上最后一次更改的SHA id键来检查它是否存在于master中。我可以看出,这是确保合并的最佳方式,但当您重新设置此SHA的基础时,它会发生更改


我有一个答案,我也将张贴,但我想知道,如果人们认为有更好的选择

在主分支的日志中通过功能分支的最后一条提交消息进行搜索,效果非常好

在主分支上,执行以下操作:

 git log -i --grep="<summary>"
git log-i--grep=“”
其中是功能分支中上次提交的注释的一段。这将向您提供主分支副本的提交SHA、提交的作者和日期;最后两个由一个重基保存。如果您的作者、日期和评论相似,那么您可以确信更改已重新基于您正在检查的分支机构的日志

如果使用rebase将所有功能分支提交压缩到主节点上的单个提交中,那么这将不起作用


此方法可能还有其他问题,请在评论中发布,或在您可以的地方建议更好的答案

如果回扣忠实于原始提交消息@TafT的答案,那么回扣将很有效。此外,使用

git log --oneline --cherry master...some-branch
从某个分支复制到主分支的每个提交都将显示
=

如果发生挤压等情况,则会更改提交消息,或者如果重定基址有冲突,则这两种解决方案都不起作用。在这种情况下,我建议如下(签出到分离的头部,以便我们不会意外地推动此合并):


除非您的代码发生了巨大的变化,否则如果合并没有导致任何变化,那么分支已经被重定了基础。否则,它显然没有。

可能重复@dan。我不一定认为重定基址和合并是相同的。不,重定基址会更改变更集的SHA键,因此该问题中的大多数答案无法适用于此问题。重定基址的一个用途是重写变更集的历史记录,这使得在某些场景中可能很难或不可能计算出发生了什么。这就是我要问的问题。此外,在git中,重定基址似乎也被广泛使用,因此,除了我之外的其他人找到具有被重定基址到其他分支上的废弃分支的存储库的机会似乎相当高。@k0pernikus当然它们不一样,但这里的真正目的是找到合并或不合并的内容,或者换言之:哪些内容已经是master的一部分,或者不属于master。不属于主程序的部分将是未合并的分支。
git cherry
,有关更多详细信息,请参见我的回答@AndrewC对问题的评论,解释了一些cherry命令使用了“补丁ID”。这将使您的建议比我最初意识到的更合适,因为它不是基于在执行重基时更改的“提交ID”。
git checkout master~0
git merge some-branch