Частичный git применяется

Как я могу получить git apply --index, чтобы не прерывать полностью только потому, что один hunk терпит неудачу? У меня есть патч 100K + с удалением и добавлением десятков файлов, было бы больно танцевать patch -p1, git add, git rm вручную.

Изменить: git apply --reject --index, похоже, выполняет две трети работы: патч применяется, и удаленные файлы устраиваются для удаления, но новые файлы не добавляются.

Ответы

Ответ 1

Так как git версия 1.7.12, git apply имеет параметр --3way (или -3), который будет:

  • Применить любые изменения, которые он может определить, и сгенерировать их (например: добавить их в рабочее дерево и индекс),
  • Добавьте новые файлы и выполните их (например: добавьте их в рабочее дерево и индекс) и
  • Когда он сталкивается с конфликтом слияния, он будет для каждого конфликтующего ханка:

    • Поместите код из ветки, которую вы исправляете между марке <<<<<<< ours и =======, и
    • Поместите код из файла исправления между отметками ======= и >>>>>>> theirs.

    ... файлы с конфликтами не будут поставлены: вам придется вручную их исправить и git add после этого.

Ответ 2

Попробуйте git apply --reject <patchfile>