Я хочу увидеть разницу всех изменений в ветке, которая еще не объединена с мастером.
Я попытался:
git diff master
git diff branch..master
git diff branch...master
Однако в каждом из этих случаев diff содержит содержимое в master, которое еще не было объединено с моей веткой.
Есть ли способ провести различие между моей веткой и мастером, которое исключает изменения в мастере, которые еще не были объединены в мою ветку?
git diff master..branch
. Вы можете сократить его,git diff master..
если вы находитесь на ветке.r1..r2
Синтаксис является аббревиатурой ,^r1 r2
что означает «показать мне все , что происходит отr2
и не достижима изr1
».git help gitrevisions
содержит информацию о различных синтаксисах, которые вы можете использовать....
синтаксисеgit diff
. Ваш комментарий неверен, @jszakmeister, потому что диапазоны ревизий, описанные вgitrevisions
, не имеют ничего общего сgit diff
. Дифф сравнивает две точки в истории, не может работать с диапазоном.git diff
работает не так, как другие команды ... факт, который меня расстраивает. :-(Ответы:
База слияния - это точка, от которой
branch
отходятmaster
.Git diff поддерживает специальный синтаксис для этого:
Вы не должны менять стороны, потому что тогда вы получите другую ветку. Вы хотите знать, что изменилось
branch
с тех пор, как оно изменилосьmaster
, а не наоборот.Слабо связанные:
Обратите внимание, что
..
и...
синтаксис не имеет той же семантики, что и в других инструментах Git. Это отличается от значения, указанного вman gitrevisions
.Цитирование
man git-diff
:источник
$ git diff master...branch
произведеноfatal: ambiguous argument 'master...branch': unknown revision or path not in the working tree.
- это зависимая от версии команда?branch
. Я решил придерживаться имени, которое ОП выбрал в вопросе. Если вы хотите использовать текущую ветку, заменитеbranch
наHEAD
.git diff master...
чтобы избежать указания ветви (текущая будет принята).devel
Работает ли оригинальная команда после проверки , @ChrisGuest? Возможно, Git создал для вас ветку во время оформления заказа, как локальную копию удаленной ветки (как правилоorigin/devel
). Если бы это было так,git diff origin/devel...bugfix/API-353-api-allows-database-access-when
сработало бы еще до оформления заказа.Вот что сработало для меня:
Это показывает только изменения между моей текущей выбранной локальной веткой и удаленной главной веткой, и игнорирует все изменения в моей локальной ветке, которые произошли от коммитов слияния.
источник
git cherry origin/master
.master
возможно, вы отклонили набор коммитов из-под вас.Как также отметили Джон Шакмейстер и Василий Новиков, самая короткая команда для получения полного различий с точки зрения мастера в вашей ветке:
Это использует вашу локальную копию мастера.
Для сравнения конкретного файла используйте:
Пример вывода:
источник