При использовании git log -p
для просмотра коммитов в виде заплаток, он делает, как вы заметили, пропускаемое слияние совершает, когда приходит время, чтобы Diff их. То есть, он показывает вам журнал сообщение, как обычно, но никакого различия вообще нет.
У вас есть три опции для управления этим:
-c
(один дефис и один нижний регистр C): показать одну форму комбинированного дифференциала
--cc
(два дефиса и два в нижнем регистре Cs): показать другую форма комбинированного различия
-m
: «разделить» каждое слияние, показывая патч против каждый родитель. В этом случае вы дважды увидите сообщение журнала.
Объединенный формат diff описан в a separate section of the git diff
documentation (и нескольких других, которые разделяют этот файл). По некоторым причинам, хотя, ключевым фактом является hidden in this earlier section:
Обратите внимание, что комбинированные дифф перечислены только те файлы, которые были изменены со всех родителей.
Довольно часто это на самом деле то, что вы хотите: если слияние хранится файл README.txt
же, как README.txt
в обоих родителей совершить, это, вероятно, не интересно, чтобы показать диф против другого родителя фиксации. Однако, если вы этого не ожидаете, это может быть неожиданностью. Единственный способ победить его - использовать -m
.
Это имеет некоторый смысл для git diff-tree
, git diff-files
и git diff --raw
как раздел самого описывающей файлов, которые будут перечислены и файлы, которые соответствуют по крайней мере один из родителей не будет перечислены. Однако, если вы не запомнили этот маленький факт и просто ищете документацию для ближайших следующих двух разделов («создание патчей с» и «комбинированный формат diff»), ключевое предложение, вероятно, даже не будет в вашем окне. Я до сих пор помню, как меня сожгли, но много лет спустя. :-)
'git log .. @ {u} -p -m -first-parent' предоставляет всю необходимую мне информацию. Я хотел бы отметить, что упоминание комбинированных опций diff (-c/- c), где немного сбрасывается: поскольку они не генерируют diff для файлов, идентичных файлам любого родителя, изменения в слияниях, которые принимаются as-is не отображается на выходе. Я думаю, что принятие чужих изменений в запросе на вытягивание - это чаще, чем не обычный случай. Во всяком случае, '-p -m -first-parent', похоже, выполняет эту работу. Благодаря! – pointyhat
Да, я вроде хотел бы, чтобы была опция объединенного-diff, которая все еще показывала файлы, которые соответствовали одному (или нескольким, но не обоим/всем) родителям (родителям), и что * этот * (несуществующий) вариант был по умолчанию , – torek