22

我怎样才能git apply --index不因为一个大块失败而完全中止?我有一个 100K+ 的补丁,其中有几十个文件被删除和添加,手动做patch -p1, git add,git rm跳舞会很痛苦。

编辑: git apply --reject --index似乎完成了三分之二的工作:应用补丁并暂存删除的文件以进行删除,但不添加新文件。

4

3 回答 3

19

从 git 版本 1.7.12 开始,git apply有一个--3way(or -3) 选项,它将:

  1. 应用它可以计算出的任何更改并暂存它们(即:将它们添加到工作树和索引中),
  2. 添加任何新文件并暂存它们(即:将它们添加到工作树和索引中),并且,
  3. 当它遇到合并冲突时,对于每个冲突的块,它将:

    1. 将您正在修补的分支中的代码放在标记之间,并且<<<<<<< ours=======
    2. 将补丁文件中的代码放在=======>>>>>>> theirs标记之间。

    ... 有冲突的文件不会被暂存:您必须手动修复它们,git add然后再修复它们。

于 2014-12-03T20:33:02.530 回答
6

尝试git apply --reject <patchfile>

于 2014-02-20T19:27:18.457 回答
2

这就是我所做的,

首先,执行git apply --reject. 然后以交互方式运行git add -p并选择帅哥。add -p你也可以使用其他 git GUI 来代替。要添加新文件,如果未添加,请手动添加。

于 2020-02-26T09:09:24.840 回答