0

Если в истории файла есть слияние с «интересным» разрешением конфликта, git log пропустит его. Почему это, и как я могу включить эту фиксацию?Почему ограничение по «git log» с ограничением по каналу задерживается с интересными разрешениями конфликтов?

(К «интересным», я имею в виду резолюцию, которая не просто взять версию с HEAD или MERGE_HEAD дословно.)

К примеру, в this sample repository, я подготовил простую историю, которая иллюстрирует проблему :

$ 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 

(Примечание: вышеуказанные выходы получают мерзавца версии 2.11.0.)

+0

Какую версию Git вы используете? Использование 2.7.4, 'Журнал мерзавец --oneline 4a69f452 test.txt' показывает' 9fc' совершить для меня. –

+1

Добавить ' --cc' и 'git log' будут смотреть на объединенный-diff и должны найти изменение. Я не уверен, почему параметры по умолчанию такие, как они. (Кажется, они немного отличаются от одной версии Git до другой , и когда я попробую ваш пример, клонированный из вашей ссылки GitHub, в 2.10.1, я вижу фиксацию '9fc'.) – torek

+0

@torek вы правы,' --cc' заставляет это забрать это сообщение. это указано в разделе «Форматирование Diff» на странице руководства, которое звучит так, как будто это должно * не * влиять на фиксации, включенные в журнал! Получаете ли вы слияние даже без '--cc' в' 2.10.1'? –

ответ

0

Это происходит, если у вас установлена ​​опция конфигурации log.follow, равная true, или, что то же самое, если вы передадите --follow команде журнала.

В документации по этому варианту указано, что он «плохо работает в нелинейной истории». Наверное, это то, что они означают. :(

$ git log --oneline 4a69f452 -- test.txt 
4a69f45 add -stuff at C and G 
9fc8e8b resolve E-alpha + E-beta as E-gamma 
95bc62e add -beta suffix on lines E and J 
465abd9 add -alpha suffix on lines A and E 
f43dc68 initial ten-line A..J file 

$ git log --oneline 4a69f452 --follow -- test.txt 
4a69f45 add -stuff at C and G 
95bc62e add -beta suffix on lines E and J 
465abd9 add -alpha suffix on lines A and E 
f43dc68 initial ten-line A..J file