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]
.
git diff master..branch
. Ви можете скоротити його,git diff master..
якщо ви на гілці.r1..r2
Синтаксис є абревіатурою ,^r1 r2
що означає «показати мені все , що відбувається відr2
і не досяжна зr1
».git help gitrevisions
містить інформацію про різні синтаксиси, які ви можете використовувати.