Не в состоянии придумать случай, когда git diff master..lab и git diff master ... lab будут отличаться - PullRequest
4 голосов
/ 29 марта 2010
git diff master..lab 

Это даст разницу между концами двух ветвей.

git diff master...lab # notice triple dot

Это создаст разницу, начиная с общего предка двух ветвей.

Я не могу представить ни одного сценария, в котором результат с двойной точкой отличался бы от результата с тройной точкой.

1 Ответ

13 голосов
/ 29 марта 2010

Я знаю, что вы видели это, но вот два фрагмента из документов:

git diff [--options] <commit>..<commit> [--] [<path>...]

Это синоним предыдущей формы. (git diff [--options] <commit> <commit> [--] [<path>...])

git diff [--options] <commit>...<commit> [--] [<path>...]

Эта форма предназначена для просмотра изменений в ветви, содержащей и до второй, начиная с общего предка обоих. git diff A...B эквивалентно git diff $(git-merge-base A B) B.

Я вижу, как это может сбить вас с толку - нотации .. и ... для git diff не означают то же самое, что и для списка ревизий (например, для git log).

Итак, предположим, что наша история выглядит так:

A - B - C - D - E (master)
         \
          F - G (lab)

Первый фрагмент говорит нам, что git diff master..lab эквивалентно git diff master lab, другими словами git diff E G. Это скажет нам о прямой разнице между E и G - т.е. мы увидим комбинацию F, G и обратные патчи D и E.

С другой стороны, git diff master...lab эквивалентно git diff C G - он показывает изменения до второго коммита (лаборатории), начиная с общего предка двух (базы слияния мастера и лаборатории, которая является C). Разница, которую мы видим, будет комбинацией F и G. Не включает D и E.

Вариант использования для обозначения тройной точки - это когда вы хотите увидеть всю работу, которую вы проделали в своей ветке тем (лаборатории), которая еще не объединена с мастером. Вам все равно, что еще было сделано на мастере - вас интересует только работа, которую вы делаете в своей ветке тем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...