При использовании патча можно ли разрешить конфликты?

Я на окнах.

По разным причинам мы имеем несколько экземпляров git разных ветвей svn.

Много раз я хочу исправить проблему в репозитории A, сгенерировать патч и применить его к репозиторию B. Это работает отлично, за исключением случаев конфликтов.

При перезагрузке я просто щелкаю правой кнопкой мыши по папке и использую tortioseGit и выбираю параметр разрешения. Это вызывает приятный gui, позволяющий мне работать через мои конфликты.

Есть ли способ сделать это с отклоненными фрагментами патчей?

Вот мой текущий подход к созданию/применению патчей

git format-patch master --stdout > c:\\patch\\file.patch
git apply --reject --ignore-space-change --ignore-whitespace c:\\patch\\file.patch

Ответ 1

Чтобы создать патч, выполните следующие действия:

git format-patch --stdout first_commit^..last_commit > changes.patch

Теперь, когда вы готовы применить исправления:

git am -3 < changes.patch

-3 будет выполнять трехстороннее слияние, если есть конфликты. На этом этапе вы можете сделать git mergetool, если хотите перейти в gui или просто вручную объединить файлы с помощью vim (стандартное разрешение <<<<<<, ||||||, >>>>>>).

Ответ 2

Если вы часто сталкиваетесь с тем же конфликтом, который задается при применении исправлений, перезагрузки или слияния, вы можете использовать функцию git rerere (повторное использование записанного разрешения). Это позволяет заранее определить, как конфликты должны быть разрешены на основе того, как вы их разрешили в прошлом. Подробнее о том, как это работает, см. http://git-scm.com/blog/2010/03/08/rerere.html.

Ответ 3

Tortoise Git имеет функцию слияния, которая может открывать файлы патчей.

Здесь есть изображение здесь.

Ответ 4

Мой подход:

  • Создайте "Интеграцию" -Branch, где файлы идентичны.
  • Применить патч к этой ветке интеграции
  • Объединить или переустановить его, чтобы справиться (не знаю, полезна ли перебаба здесь, потому что я не знаю, что произойдет при применении дальнейших патчей)