假设git树显示为:
1 ----> 2 ----> 3 -----> 4(HEAD/MASTER)
\
\ (PATCH)
--2A->
我有一个2和2A的差异补丁,它增加了一个功能。
是否有一种将此补丁应用于最新提交的智能方法? 假设我所拥有的只是补丁文件和主线的git repo。
答案 0 :(得分:1)
首先尝试简单的方法。如果你已经掌握了,
git apply PATCH
如果补丁不适用于HEAD / master,请尝试:
git checkout 2
git apply PATCH
git tag patch-applied
git checkout master
git cherry-pick patch-applied
OR
git checkout 2
git apply PATCH
git tag patch-applied
git checkout master
git merge patch-applied
对于合并和rebase,您可能需要解决冲突。 rebase为您提供线性历史记录,merge为您提供分支历史记录。
您可以使用git lola查看您创建的历史记录。
答案 1 :(得分:0)
作为TheCodeArtist points out,如果您有补丁文件,只需使用git apply <patch>
即可应用它:
git checkout master
git apply <patch>
根据official Linux Kernel Git documentation for git apply
:
NAME
git-apply - 将补丁应用于文件和/或索引
说明
读取提供的diff输出(即“补丁”)并将其应用于文件。
此命令应用修补程序但不创建提交。使用git-am(1)从git-format-patch(1)生成的补丁和/或通过电子邮件收到的补丁中创建提交。