Скажем, я сделал слияние git и столкнулся с конфликтом в каком-то файле, скажем package.json
или pom.xml
и, возможно, некоторые другие файлы.
Я хотел бы
- автоматически разрешает конфликты слияния для определенных файлов из командной строки, а
- позволяя себе вручную разрешать все остальные конфликты, если таковые имеются, и
- убедитесь, что я не потеряю ценные изменения из любой ветки.
Из-за 2), я не могу использовать git merge -Xours
, так как это разрешит ВСЕ конфликты. Я хочу разрешить только конфликты в одном файле.
Из-за 3), я не могу использовать git checkout --ours package.json
, так как это может потерять некоторые изменения из входной ветки.
Пример использования - это, например, автоматическое слияние script, которое будет разрешать тривиальные хорошо известные конфликты предопределенным образом и сбой, если в других файлах есть другие конфликты.
Обычно у типичного случая есть две ветки с полем version
в package.json
, как показано ниже:
$ git diff
diff --cc package.json
index 75c469b,f709434..0000000
--- a/package.json
+++ b/package.json
@@@ -1,6 -1,6 +1,12 @@@
{
"name": "test",
++<<<<<<< HEAD
+ "version": "2.0.1",
++||||||| merged common ancestors
++ "version": "1.0.0",
++=======
+ "version": "1.0.2",
++>>>>>>> master
Можно ли разрешить конфликт для файла JUST ONE, используя данную стратегию? Что-то вроде:
git-resolve-conflict --ours package.json