git cherry-pick和git show之间有什么区别?补丁-p1?

时间:2011-03-01 15:20:55

标签: git cherry-pick

我遇到了git cherry-pick X会有一些冲突的情况,但也创建了额外的插入(使用git diff验证时)。

然后我重新运行git show X > my.patch,然后在我的树上执行了patch -p1 < my.patch。 我得到了更好的结果,一些冲突,但结果更清晰。

git对樱桃挑选有什么特别之处?我使用git 1.7.0.4。

编辑: 通过更清晰的结果,我的意思是结果树与git show X的结果匹配得更多,而git cherry-pick包含更多代码。

2 个答案:

答案 0 :(得分:8)

当你挑选一个提交时,它会使用提交的所有元数据提交结果,而不仅仅是它代表的diff - 您将获得原始提交消息和作者。你的补丁管道将为你提供你想要的工作树内容,但是你必须自己提交它,希望用git commit -c <original-commit>复制像cherry-pick那样的元数据。 Cherry-pick还有一些可能有用的附加选项,并且可以接受多次提交(可能指定为rev-list范围)。 patch显然不支持其中任何一项。

我不确定你断言结果是“更干净”。您是否建议git应用差异而不是patch

答案 1 :(得分:1)

这可能会有所帮助:

http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html

这可能部分偏离主题,但正如您所看到的,樱桃选择似乎以某种方式跟踪代码块中的代码块,比我猜的补丁更先进,这可能只是按顺序解析两个代码库并排,并标记不同的行。