GIT 2 или более конфликтов слияния в одном файле - как обрабатывает p4merge?
- GIT p4merge - 2 или более конфликта в одном файле
Я интегрировал p4merge с GIT, и я однажды сталкивался с этой ситуацией.
У меня есть файл с конфликтами слияния. Файл говорит, что foo.c имеет конфликты слияния в 3 разных строках кода (первая строка с конфликтом, некоторые строки в середине с конфликтами).
Когда я разрешил первые конфликтные строки (не другие конфликтные строки) и сохранил (используя кнопку сохранения на p4merge), я думаю, что он добавляет foo.c в индекс, а когда я фиксирую, git позволяет мне коммитить, не давая мне ошибки или предупреждение для разрешения других конфликтующих строк в том же файле.
Это проблема с GIT или p4merge? я думаю, что GIT должен предупредить или допустить ошибку, что есть другие конфликтующие строки в этом файле. но это просто обязывает.
- Объединить определенный файл в GIT
Другой вопрос, который у меня есть, есть ли команда, чтобы я мог отправить разработчику слить определенный файл? Когда я запускаю git mergetool, он открывает все конфликты слияния один за другим, вместо этого есть ли способ, как clearcase, где я могу сказать, слить этот выбранный файл?
1 ответ
Мое предположение: когда вы сохраняете файл в p4merge, он счастливо возвращается с кодом 0, файл изменяется, и git предполагает, что конфликты были разрешены. Есть параметр config
mergetool.<tool>.trustExitCode
(mergetool.p4merge.trustExitCode
в вашем случае), который может быть установлен в false, поэтому git всегда будет спрашивать вас, было ли слияние успешным после запускаgit mergetool
(что может быть довольно раздражающим). Вы также можете написать обертку дляp4merge
который проверит наличие маркеров конфликта после запускаp4mege
, или жеpre-commit
hook, который отклоняет коммиты, содержащие файлы, содержащие такие маркеры, хотя я никогда не делал ничего подобного.Да, вы можете запустить
git mergetool <file>
разрешить указанный файл. Узнайте больше здесь.