Соглашение, которое у нас есть, заключается в том, что при возникновении конфликта слияния, после его разрешения, исходный конфликтующий дифференциал должен быть добавлен к сообщению фиксации, чтобы помочь разработчикам, которые могут позже попытаться выяснить, произошло ли слияние плохо. 1001 *
Обычный способ сделать это -
git diff >conflict_log
, а затем я копирую и вставляю это в сообщение коммита.
У этого рабочего процесса есть несколько недостатков, которые я бы хотел улучшить:
- Вы можете забыть сначала сохранить
conflict_log
, а затем разработчики часто заканчивают повторение слияния, чтобы иметь возможность получить исходный diff
- Копировать вставку всего различий может быть сложнее, если разность велика и вы работаете над сессией ssh
Я хотел бы создать хук prepare-commit-msg
, который автоматически добавит этот diff к сообщению фиксации.
Проблема, с которой я столкнулся, заключается в том, что во время запуска prepare-commit-msg
индекс уже был изменен, поэтому git diff
работает по-другому и больше не просто отображает исходные конфликты.
Я пробовал использовать версии вроде
git diff hash hash^1 hash^2
А в документации здесь: https://git -scm.com / book / ru / v2 / Git-Tools-Advanced-Merging
под "Combined Diff Format" предлагается использовать
git diff --cc
Но я не уверен,
я должен использовать HEAD
, MERGE_HEAD
, ORIG_HEAD
, учитывая, что я пытаюсь сделать это в prepare-commit-msg
до фактического принятия коммита слияния?
Я хочу получить разность, которую git генерирует с маркерами <<<<<<
от разрешения конфликтов, до того, как пользователь начал их разрешать, но во время выполнения prepare-commit-msg
пользователь уже поставил свои разрешения, Есть ли способ, которым я могу взять diff против этого состояния индекса, вместо текущего состояния?