файл git diff показывает только, что ревизия/ветвь A впереди ревизии/ветвь B




git убрать файл из отслеживания (4)

Ваш вопрос немного неясен, потому что я не уверен, хотите ли вы увидеть diff / patch изменений между master и feature или просто хотите увидеть, какие ветви содержат, которые фиксируют то, что другая ветка не имеет.

Предполагая, что вы просто хотите увидеть, какие коммиты находятся в вашей ветви feature которые не существуют в master (т. Е. Кто совершает feature , «впереди» master ), вы можете сделать

$ git log --oneline --graph master..feature

Если вы хотите увидеть, как разделены как master и feature , вы можете использовать эту команду:

$ git log --oneline --graph --first-parent \
--decorate --left-right master...feature
> 5bef654 (feature) A ...
> f7c65ea B ...
> fc66245 C ...
> 7435fc0 D ...
< bf68204 (master) X ...
< 0c10ed1 Y ...
< 27bb774 Z ...

Вышеприведенный вывод показывает фиксации в master , которые не находятся в feature с < перед ними (поскольку вы использовали master...feature с мастером слева < сторона команды), в то время как feature фиксации, не находящаяся в главном, отмечен значком > поскольку вы использовали feature с правой стороны master...feature Тройные точки ... в этой форме важны, не оставляйте их.

Вы можете узнать больше об указании диапазона фиксации из книги Pro Git .

Иногда у меня возникает следующая проблема:

  1. Добавьте некоторые коммиты в ветви функции.

  2. Обновить мастер из восходящего потока.

  3. Хотите увидеть разницу между ветвью функций и мастером, но мастер git diff master показывает все вещи, которые были добавлены / удалены в master, когда я действительно хочу видеть только, что ветвь функции опережает master, а не что он позади.

Есть ли способ сделать это, не объединяя мастер в ветку функций?



Я обычно хожу

git log -p feature-branch --not master

Но если вы хотите разницу, вы ищете

git diff <common-ancestor> master

где <common-ancestor> является общим предком вашей ветви функций и мастером, с которой вы хотите сравнить. Вы можете использовать merge-base чтобы найти это для вас.

git diff `git merge-base feature-branch master` feature-branch

Не точный ответ, но один лайнер, который работает большую часть времени для моих нужд.

git difftool -d master..





git