Я использовал git -формат-патч и 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, содержащие неработающие ханки?