将先前提交的git补丁应用于以后的提交

时间:2013-08-20 09:30:35

标签: git patch

假设git树显示为:

1 ----> 2 ----> 3 -----> 4(HEAD/MASTER)
      \
       \ (PATCH)
        --2A->

我有一个2和2A的差异补丁,它增加了一个功能。

是否有一种将此补丁应用于最新提交的智能方法? 假设我所拥有的只是补丁文件和主线的git repo。

2 个答案:

答案 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)生成的补丁和/或通过电子邮件收到的补丁中创建提交。