我尝试使用git cherry-pick来合并来自master的一些提交,然后使用git-cherry来确定当前合并了哪些提交。当我按照master上的顺序合并它时,它工作得很好,但是当我跳过合并一个提交时,它不会显示下一个合并的提交。示例如下:
$ git branch
* branch
master
$ git log --oneline
46aad17 comment4
56e43b0 comment3
26370b3 comment2
6192fa4 comment1
$ git cherry -v branch master
- 5c5e979707cd6a77ef3ae79627cdd211cad86a28 comment3
- ee0386c78d9e6d21dce7a8bac8e40beef73fb993 comment4
+ 9495c94ece440d9a05c3218f88d1b72a7fd67664 unmerged # this wasn't merged
+ 235b0822f08f351264071e7b2500caa9af997fb8 comment2问题是为什么comment2在日志中显示为未合并,而在日志中显示为合并?
发布于 2011-03-21 19:53:53
作为初步说明,将这些描述为合并有点令人困惑-它们只是精挑细选,即通过将另一个提交引入的补丁应用到新的父级上而创建的提交。
git cherry查看提交引入的补丁,并进行测试以查看上游分支中是否已经引入了类似的补丁。如git cherry man page中所述,它根据两个补丁是否具有相同的"patch ID"来决定它们是否相同,描述如下:
“补丁ID”只不过是与补丁相关联的SHA1,其中忽略了空格和行号。因此,它是“相当稳定的”,但同时也是相当独特的,也就是说,具有相同“补丁ID”的两个补丁几乎保证是相同的。
哦,你可以使用这个东西来寻找可能的重复提交。
因此,我怀疑如果没有检测到与comment2关联的提交已经被应用,那是因为补丁if不同。例如,这可能是因为在精挑细选与comment2关联的提交时必须解决冲突。这很可能意味着提交引入的补丁最终是不同的。您可以通过比较这两个命令的输出来查看这是否正确:
git show 26370b3
git show 235b082https://stackoverflow.com/questions/5377095
复制相似问题