Я использовал git-format-patch и git-am, чтобы применить изменения из одного хранилища в другое. Файловые структуры одинаковы, но в репозитории, к которому я применяю изменения, есть некоторые изменения, которые приводят к тому, что большинство патчей завершается ошибкой. Но большинство фрагментов патча применяются с небольшим, но нечетким номером строк.
Насколько я могу сказать git-am apply
очень строгое толкование, так что все эти патчи полностью отвергаются.
Итак, мой рабочий процесс стал
$ git am ../the-patch.patch
# Fails because the patch doesn't apply cleanly
$ patch -p1 < ../the-patch.patch
# Applies most of the hunks, leaves .rej files for the ones that conflict
# Fix the conflicting hunks manually
$ git am --continue
Было бы неплохо, если бы мне не нужно было запускать исправление командной строки, и я мог бы просто сделать это как часть команды am.
Запуск с флагом --reject
создает файл .rej со всеми ссылками в файле, если есть конфликт, а это не то, что мне нужно.
Запуск с флагом --3way
завершается неудачно с
fatal: sha1 information is lacking or useless (the-file.java).
Repository lacks necessary blobs to fall back on 3-way merge.
Cannot fall back to three-way merge.
Я предполагаю, что набор изменений, на котором он основан, отсутствует в репозитории, в который я сливаюсь.
Есть ли способ сделать git-am apply
патч с нечетким соответствием, как это делает команда raw patch, и создавать только файлы .rej, содержащие фрагменты, которые потерпели неудачу?