如何处理git:补丁不适用

时间:2015-01-19 23:01:49

标签: git

我有一年前生成的补丁文件。 (进行代码更改的人已离开,所以我没有他的工作区与当前代码同步。我当时只有一个显示差异的补丁文件。)

我想将他的更改添加到最新的分支。为此,我将补丁文件应用到我的工作区,它显示一些文件是"补丁不适用"。原因是git无法找到插入其更改的正确位置。一年前,他的更改应插入文件的第X行和第X + 1行之间。但是现在,当git apply尝试这样做时,它发现X行和X + 1已经变成了某些行为。其他。 (因为在今年引入了其他代码)。

为了验证我的猜测,我手动删除了该文件的一些代码,以便第X行和第X + 1行与生成补丁时相同,这次git apply没有抱怨此文件。

我的问题是如何git应用旧补丁?

2 个答案:

答案 0 :(得分:0)

两个选项:

  1. 你没有。您研究补丁以了解更改的意图并进行自己的编辑。
  2. 您通过与修补程序正在查看的源位于同一时间点的提交创建分支。您应用修补程序,然后合并。
  3. 但是,第二个选项中的“合并”步骤可能会让您回到第一个选项。

答案 1 :(得分:0)

执行:

git am -3 foo.patch
patch -p1 < foo.patch

手动修复任何冲突,然后删除.rej文件。

然后做:

git add fixed_conflicted_files
git am --continue