Ответ 1
git diff `git merge-base master branch`..branch
Объединить базу - это точка, в которой branch
отклоняется от master
.
Git diff поддерживает специальный синтаксис для этого:
git diff master...branch
Вы не должны менять стороны, потому что тогда вы получите другую ветку. Вы хотите знать, что изменилось в branch
, так как оно отклонилось от master
, а не наоборот.
Непосредственно:
Обратите внимание, что синтаксис ..
и ...
не имеет той же семантики, что и в других инструментах Git. Он отличается от значения, указанного в man gitrevisions
.
Цитата man git-diff
:
git diff [--options] <commit> <commit> [--] [<path>…]
Это просмотр изменений между двумя произвольными
<commit>
.
git diff [--options] <commit>..<commit> [--] [<path>…]
Это синоним предыдущей формы. Если
<commit>
с одной стороны опущено, это будет иметь тот же эффект, что и при использованииHEAD
.
git diff [--options] <commit>...<commit> [--] [<path>…]
Эта форма предназначена для просмотра изменений в ветке, содержащей и до второго
<commit>
, начиная с общего предка обоих<commit>
. "git diff A...B
" эквивалентен "git diff $(git-merge-base A B) B
". Вы можете опустить любой из<commit>
, который имеет тот же эффект, что и при использованииHEAD
.На всякий случай, если вы делаете что-то экзотическое, следует отметить, что все
<commit>
в приведенном выше описании, за исключением двух последних форм, которые используют обозначения "..", могут быть любыми<tree>
.Более подробный список способов написания
<commit>
см. в разделе "УКАЗАНИЕ РЕВИЗИОНОВ" в разделеgitrevisions[7]
. Однако "diff" - это сравнение двух конечных точек, а не диапазонов, а обозначения диапазона ( "<commit>..<commit>
" и "<commit>...<commit>
" ) не означают диапазон, определенный в разделе "УКАЗАНИЕ ДИАПАЗОНОВ" в разделеgitrevisions[7]
.