Я на окнах.
По разным причинам у нас есть несколько экземпляров git разных веток svn.
Много раз я хочу исправить проблему в репозитории A, сгенерировать патч и применить его к репозиторию B. Это работает нормально, за исключением конфликтов.
При перебазировании я просто щелкаю папку правой кнопкой мыши, использую tortioseGit и выбираю параметр разрешения. Это вызывает хороший интерфейс, позволяющий мне работать с моими конфликтами.
Есть ли способ добиться этого с помощью отклоненных фрагментов исправлений?
Вот мой текущий подход к созданию / применению патчей
git format-patch master --stdout > c:\\patch\\file.patch
git apply --reject --ignore-space-change --ignore-whitespace c:\\patch\\file.patch
git mergetool
и выполнить трехстороннее слияние с графическим интерфейсом по вашему выбору (я неравнодушен к kdiff в Windows) ...Ответы:
Чтобы сгенерировать патч, сделайте следующее:
Теперь, когда вы готовы применить патчи:
при
-3
возникновении конфликтов будет выполнено трехстороннее слияние. На этом этапе вы можете сделать ,git mergetool
если вы хотите , чтобы перейти к графическому интерфейсу или просто вручную объединить файлы с помощью Vim (стандарт<<<<<<
,||||||
,>>>>>>
разрешения конфликтов).источник
--ignore-whitespace --ignore-space-change
вgit am
тоже. У меня были тривиальные слияния, которые без этого не прошли.git apply -3 changes.patch
Кажется, у меня тоже работаетgit mergetool
. Вместо этого мне пришлось найти базовую фиксацию используемого исходного патча, применить поверх него (к счастью, в моем репо это было), а затем переустановить.git am -3
ни один изgit apply -3
маркеров конфликта не будет помещен в мои файлы, даже если я получаю сообщения типаApplied patch to 'configure.ac' with conflicts.
иerror: patch failed: ...
. Это идетgit 2.17.1
. Возможно, когда некоторые файлы вообще нельзя исправить, git откатывается?Если вы часто сталкиваетесь с одним и тем же набором конфликтов при применении исправлений, ребазировании или слиянии, вы можете использовать функцию git rerere (повторное использование записанного разрешения). Это позволяет вам заранее определить, как следует разрешать конфликты, исходя из того, как вы разрешали их в прошлом. См. Http://git-scm.com/blog/2010/03/08/rerere.html для получения подробной информации о том, как это работает.
источник
TortoiseGit имеет функцию слияния, которая может открывать файлы патчей.
Там картинка его здесь .
источник
Мой подход:
источник