Если git merge имеет конфликты, файлы, находящиеся в конфликтном состоянии, содержат маркеры, показывающие различия.
Предположим, что, пытаясь разрешить конфликт, я внес изменения, например:
main и некоторые из mybranchgit checkout mybranch somefile и думаю: «Я просто воспользуюсь той версией, которая стоит mybranch».Но потом я передумал и хочу вернуть файл в то состояние, в котором он был в начале слияния, с указанием маркеров конфликта, и начать заново, пытаясь разрешить конфликты.
Думаю, я смогу побежать git checkout [something] somefile, чтобы вернуться в конфликтное состояние. Что бы это могло быть?





git checkout --conflict=merge somefileНашёл в руководстве . Другими вариантами --conflict являются diff3 и zdiff3, например:
git checkout --conflict=diff3 <path>
Обновление: git checkout -m <path, как предположил @RomainValeri, это самый простой вариант; это похоже, но разные стратегии --conflict обеспечивают немного больший контроль.
Используйте параметр --merge (сокращенно -m) для git checkout или git restore (здесь обе команды ведут себя одинаково)
# the legacy way
git checkout -m <path>
# the (not so) new way
git restore -m <path>
С помощью -m изменения, внесенные в файл рабочего дерева, можно отменить, чтобы воссоздать исходный конфликтный результат слияния.
Хороший! Самый простой способ.
Никогда не сталкивался с этим синтаксисом, но кажется, что оба наших решения работают одинаково. Хорошо знать.