GIT 2 или более конфликтов слияния в одном файле - как обрабатывает p4merge?

  1. GIT p4merge - 2 или более конфликта в одном файле

Я интегрировал p4merge с GIT, и я однажды сталкивался с этой ситуацией.

У меня есть файл с конфликтами слияния. Файл говорит, что foo.c имеет конфликты слияния в 3 разных строках кода (первая строка с конфликтом, некоторые строки в середине с конфликтами).

Когда я разрешил первые конфликтные строки (не другие конфликтные строки) и сохранил (используя кнопку сохранения на p4merge), я думаю, что он добавляет foo.c в индекс, а когда я фиксирую, git позволяет мне коммитить, не давая мне ошибки или предупреждение для разрешения других конфликтующих строк в том же файле.

Это проблема с GIT или p4merge? я думаю, что GIT должен предупредить или допустить ошибку, что есть другие конфликтующие строки в этом файле. но это просто обязывает.


  1. Объединить определенный файл в GIT

Другой вопрос, который у меня есть, есть ли команда, чтобы я мог отправить разработчику слить определенный файл? Когда я запускаю git mergetool, он открывает все конфликты слияния один за другим, вместо этого есть ли способ, как clearcase, где я могу сказать, слить этот выбранный файл?

1 ответ

  1. Мое предположение: когда вы сохраняете файл в p4merge, он счастливо возвращается с кодом 0, файл изменяется, и git предполагает, что конфликты были разрешены. Есть параметр config mergetool.<tool>.trustExitCode (mergetool.p4merge.trustExitCode в вашем случае), который может быть установлен в false, поэтому git всегда будет спрашивать вас, было ли слияние успешным после запуска git mergetool (что может быть довольно раздражающим). Вы также можете написать обертку для p4merge который проверит наличие маркеров конфликта после запуска p4mege, или же pre-commit hook, который отклоняет коммиты, содержащие файлы, содержащие такие маркеры, хотя я никогда не делал ничего подобного.

  2. Да, вы можете запустить git mergetool <file> разрешить указанный файл. Узнайте больше здесь.

Другие вопросы по тегам