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