Мы поддерживаем веб-приложение, которое имеет общую главную ветвь и множество параллельных ветвей, по одной для каждой установки, каждая из которых имеет несколько конкретных изменений. Исходный код управляется в git, и это отличный инструмент, когда нам нужно перенести функции и исправления из основной ветки в параллельные. Но мало файлов, которые являются конфиденциальными, и автоматическое слияние обычно дает плохие результаты. Таким образом, слияние было бы намного проще, если бы их можно было как-то пометить, и каждое слияние привело бы к конфликту, требующему слияния вручную.
Я искал ответ:
- Я использую параметры слияния --no-commit и --no-ff , но это не одно и то же.
- Здесь и здесь кто-то задает тот же вопрос, но без решения.
- Похожий случай, похоже, заключается в том, как предотвратить слияние файлов с использованием .gitattributes, содержащих: somefile.php merge = ours . Я попытался найти какой-нибудь вариант слияния, который мог бы вызвать конфликт или принудительное слияние вручную, но пока не нашел.
- .gitattributes, содержащие: somefile.php -merge , никогда не объединяются автоматически, поэтому принудительное объединение выполняется вручную. Это 90% -ное решение, но я стремлюсь попробовать автоматическое слияние и пометить его как конфликт независимо от того, успешно оно или нет.Но это пока что ближе всего к решению. (... спасибо Чарльзу Бейли за разъяснения ...)
- Кто-то предлагает написать собственный драйвер слияния ( 1 , 2 ), но как это сделать, мне далеко не ясно.
редактировать: вариант 4. описание
git fetch
сначала делаю , а затем используюgit difftool <file> FETCH_HEAD
, поэтому я могу вручную применить изменение в удаленной ветке к локальному.