Если история файла включает фиксацию слиянием с» интересным » разрешением конфликта, git log
пропустите ее. Почему это, и как я могу сделать, чтобы эта фиксация была включена?
(Под «интересным» я подразумеваю резолюцию, которая не просто берет версию HEAD
или MERGE_HEAD
дословно.)
Например, в этом образце репозитория я подготовил простую историю, иллюстрирующую проблему:
$ git log --oneline --graph
* 4a69f452 add -stuff at C and G
* 9fc8e8bf resolve E-alpha + E-beta as E-gamma
|
| * 95bc62e9 add -beta suffix on lines E and J
* | 465abd9e add -alpha suffix on lines A and E
|/
* f43dc68c initial ten-line A..J file
Слияние зафиксировало разрешение конфликта путем введения совершенно новой версии E
строки:
$ git show 9fc8e8bf -U0 | grep -A100 ^@@
@@@ -5,1 -5,1 +5,1 @@@
- E-alpha
-E-beta
++E-gamma
Однако git log
полностью замалчивает это. Список коммитов не объясняет текущее состояние E
строки в test.txt
:
$ git log --oneline 4a69f452 test.txt
4a69f452 add -stuff at C and G
95bc62e9 add -beta suffix on lines E and J
465abd9e add -alpha suffix on lines A and E
f43dc68c initial ten-line A..J file
Есть ли вариант, который я могу датьgit log
, чтобы он включал коммит слияния?
Другие команды, напримерgit blame
, показывают, что E
строка последний раз была затронута в 9fc...
коммите слияния:
$ git blame -L5,5 4a69f452 test.txt
9fc8e8bf9 (Matt McHenry 2016-12-28 16:55:10 -0500 5) E-gamma
(Примечание: вышеуказанные выходы произведены версией git 2.11.0
.)
Это происходит
log.follow
, если для параметра config задано значениеtrue
или, что эквивалентно, если вы передаете--follow
команду log.В документации к этой опции говорится, что она «не работает хорошо на нелинейной истории». Я думаю, это то, что они имеют в виду. 🙁