git: Как применить конфликтующий патч? - PullRequest
3 голосов
/ 26 мая 2020

У меня есть патч, который я хотел бы применить к своему локальному дереву. Он генерируется с использованием git format-patch. Он содержит некоторые конфликты, поэтому для его применения я использую следующее:

$ git apply --3way mypatch.patch

Таким образом, когда я применяю его, я могу открыть файлы, которые не удалось объединить, и рукой. Однако, как только я это сделаю, я хотел бы «fini sh» применить патч - я имею в виду, я хотел бы сказать git: «Хорошо, я закончил вручную разрешать конфликты - теперь go вперед и примените этот патч с сообщением о фиксации, как оно есть в патче, и с автором, указанным в патче ".

Однако кажется, что после конфликта слияния git просто сдается и оставляет все тебе. Есть ли способ сказать git: «Привет, для этого коммита, пожалуйста, возьмите сообщение о коммите и данные об авторстве из этого патча»? Или способ сказать git: «Вы можете продолжить процесс установки патча как обычно»?

1 Ответ

5 голосов
/ 26 мая 2020

Начните с git am вместо git apply. Затем используйте git am --continue в точке, которую вы достигли.

Дольше

Команда git apply применяет патч, но никогда не делает фиксацию. Итак, независимо от того, прекращается он конфликтом или нет, его работа теперь выполнена: он остановился бы, даже если бы не было конфликта. Он не выполняет фиксацию и, следовательно, не использует авторство и сообщение из какого-либо исправления.

Команда git am (Применить почтовый ящик) применяет один или несколько исправлений, которые хранятся в «формате почтового ящика», который включает исправления, сгенерированные git format-patch, а затем делает фиксацию: по одной фиксации для каждого исправления. Авторство и сообщение поступают из патча формата почтового ящика.

Когда git am останавливается с конфликтом, и вы выполняете слияние, git am все еще ожидает обработки. Вы можете завершить этот конкретный патч, набрав git commit, или возобновить всю отложенную последовательность git am, набрав git am --continue.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...