Краткий ответ: вы можете попробовать использовать
git whatchanged master..27773b72432e86d308d25d666663f237e50aa3fd
(Это правда, что вам действительно следует использовать git log
вместо этого, но это не связано с тем, почему он не делает то, что вы ожидаете.)
Вот некоторая информация, которая поможет понять, почему:
Это обозначение 27773b72432e86d308d25d666663f237e50aa3fd..master
не не , как предлагали другие пользователи, означает «диапазон коммитов, начинающийся (но исключая) 27773b7
и заканчивающийся (и включающий) master
». Иногда это сводится к этому, но это не то, что означает . (И через минуту вы увидите, почему это различие важно.)
Что это значит: «все коммиты, которые достижимы с master
, но не достижимы с 27773b7
». (Где «достижимый» означает через родительские указатели.)
Теперь, если мы предположим, что ваш график коммитов выглядит как
.... 27773b7 -- A -- B -- C <--(master)
тогда это уменьшит до типа "диапазона", который определили другие. Но в этом случае вы не столкнетесь с проблемой. Это потому, что вы показали, что файл в 27773b7
отличается от файла в C
(master
), что означает, что либо A
, либо B
, либо C
должно быть изменено. Если ваш график коммитов выглядит так.
Таким образом, мы можем сделать вывод, что ваш граф фиксации не выглядит так.
Еще один способ, которым это может выглядеть:
--- o -- A -- 27773b7 -- x ...
\
B -- C <--(master)
На этом графике 27773b7...master
означает просто B
и C
, потому что A
недостижимо для master
, и в то время как o
является достижимым master
, это также достижимо 27773b7
.
Возможно, причина в том, что файл отличается от 27773b7
, заключается в том, что он был изменен либо A
, либо самим 27773b7
. В любом случае, использование 27773b7^
(как предполагает другой ответ) не поможет.
Что возвращает меня к моей точке зрения: если вы действительно хотите думать о том, что обозначение A..B
определяет диапазон, начало диапазона можно не считать A
; во всяком случае, вы ожидаете, что это будет база слияния между A
и B
(если она есть; иногда это может быть просто корень B
s иерархии коммитов) - и это равно A
только если A
достижимо с B
. И, во всяком случае, вы не можете предполагать, что это линейный диапазон коммитов.
Но понимание подмножества графа коммитов, которое он действительно показывает, делает более ясным, что если A..B
ничего не показывает, вам, возможно, придется попробовать B..A
.