При применении патча есть ли способ разрешения конфликтов?
Я на windows.
по разным причинам у нас есть несколько экземпляров git разных ветвей svn.
много раз я хочу исправить проблему в репозитории A, создать патч и применить его к репозиторию B. Это работает нормально, за исключением случаев конфликтов.
при перезагрузке я просто щелкните правой кнопкой мыши папку и использовать tortioseGit и выберите опцию resolve. Это воспитывает хороший графический интерфейс, чтобы позволить мне работать через мои конфликты.
есть ли способ сделать это с отклоненными фрагментами патча?
вот мой текущий подход к созданию / применению патчей
git format-patch master --stdout > c:patchfile.patch
git apply --reject --ignore-space-change --ignore-whitespace c:patchfile.patch
4 ответов:
для создания патча выполните следующие действия:
git format-patch --stdout first_commit^..last_commit > changes.patchтеперь, когда вы готовы применить патчи:
git am -3 < changes.patchthe
-3будет делать трехстороннее слияние, если есть конфликты. В этот момент Вы можете сделатьgit mergetoolЕсли вы хотите перейти к gui или просто вручную объединить файлы с помощью vim (стандартный<<<<<<,||||||,>>>>>>разрешение конфликта).
Если вы часто сталкиваетесь с одним и тем же набором конфликтов при применении патчей, перебазировании или слиянии, вы можете использовать функцию git rerere (повторное использование записанного разрешения). Это позволяет заранее определить, как конфликты должны быть разрешены на основе того, как вы разрешили их в прошлом. См.http://git-scm.com/blog/2010/03/08/rerere.html подробнее о том, как это работает.
TortoiseGit имеет функцию слияния, которая может открывать файлы исправлений.
тут картинка здесь.
мой подход:
- создать"интеграцию" -ветку, где файлы идентичны
- применить патч к этой интеграции-филиал
- объединить или перебазировать его в master (не знаю, полезна ли здесь rebase, потому что я не знаю, что произойдет при применении дальнейших патчей)
Comments