Я использовал 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 применить
патч с нечетким соответствием например, команда raw patch создает и создает только файлы .rej, содержащие фрагменты, которые не удалось?