Найти разницу между текущей и последней версией? - PullRequest
591 голосов
/ 28 марта 2012

Используя Git, как вы можете найти разницу между текущей и последней версией?

git diff last version:HEAD

Ответы [ 11 ]

1035 голосов
/ 28 марта 2012

Я не совсем понимаю значение "последней версии".

Поскольку предыдущий коммит можно получить с помощью HEAD ^, я думаю, что вы ищете что-то вроде:

git diff HEAD^ HEAD

Начиная с Git 1.8.5, @ является псевдонимом для HEAD, поэтому вы можете использовать:

git diff @~..@

Также будет работать следующее:

git show

Если вы хотите узнать разницу между головой и любым коммитом, вы можете использовать:

git diff commit_id HEAD

И это запустит ваш инструмент визуального сравнения (если настроен):

git difftool HEAD^ HEAD

После сравнения сHEAD по умолчанию, вы можете опустить его (как указано Orient ):

git diff @^
git diff HEAD^
git diff commit_id

Предупреждения

  • @ ScottF и @Panzercrisis объясняют в комментариях, чтов Windows вместо ^ должен использоваться символ ~.
144 голосов
/ 28 марта 2012

Предполагая, что "текущая версия" является рабочим каталогом (незафиксированные изменения), а "последняя версия" равна HEAD (последние подтвержденные изменения для текущей ветви), просто сделайте

git diff HEAD

creditза следующим идет пользователь Cerran

И если вы всегда пропускаете область подготовки с -a при фиксации, то вы можете просто использовать git diff.

Сводка

  1. git diff показывает неустановленные изменения.
  2. git diff --cached показывает поэтапные изменения.
  3. git diff HEAD показывает все изменения (как поэтапные, так и не постановочные).

Источник: git-diff (1) Страница руководства - Cerran

104 голосов
/ 14 октября 2015

Как указано в комментарии от amalloy , если под "текущими и последними версиями" вы подразумеваете последний коммит и коммит перед этим, вы можете просто использовать

git show
52 голосов
/ 06 ноября 2014

Разница между последним, но одним коммитом и последним коммитом (плюс текущее состояние, если есть):

git diff HEAD~

или даже (легче набрать)

git diff @~

, где @ - синоним для HEAD текущей ветви, а ~ означает «дай мне родителя упомянутой ревизии».

50 голосов
/ 14 октября 2013

Вы тоже можете сделать это так:

Сравнить с предыдущим коммитом

git diff --name-status HEAD~1..HEAD

Сравнить с текущими и предыдущими двумя коммитами

git diff --name-status HEAD~2..HEAD
15 голосов
/ 01 декабря 2013

Просто используйте флаг cached, если вы добавили, но еще не подтвердили:

git diff --cached --color
6 голосов
/ 16 марта 2017

Быстро и просто, при условии, что вы в мастере:

    git diff (checkout_id):file.txt file.txt

Пример:

    git diff asdfioei91819280din198:file.txt file.txt
4 голосов
/ 01 февраля 2016

Во-первых, используйте "git log" для просмотра журналов репо.

Теперь выберите два коммит-идентификатора, относящиеся к двум коммитам, вы хотите увидеть различия ( Пример - самый верхний коммит и более старый коммит [в соответствии с вашими ожиданиями текущего -версия и какая-то старая версия] ).

Далее используйте:

git diff <commit_id1> <commit_id2>

или

git difftool <commit_id1> <commit_id2>
2 голосов
/ 28 августа 2018

Я использую bitbucket с Eclipse IDE с установленным плагином Eclipse EGit. Я сравниваю файл из любой версии его истории (например, SVN).

Project Explorer> Правый клик по файлу> Команда> Показать в истории

Это принесет историю всех изменений в этом файле. Теперь нажмите CTRL и выберите любые две версии> «Сравнить друг с другом»

1 голос
/ 30 января 2019

Если верхний коммит указан HEAD, вы можете сделать что-то вроде этого:

commit1 -> HEAD
commit2 -> HEAD~1
commit3 -> HEAD~2

Разница между первым и вторым коммитом:

git diff HEAD~1 HEAD

Разница между 1-м и 3-м коммитом:

git diff HEAD~2 HEAD

Разница между 2-м и 3-м коммитом:

git diff HEAD~2 HEAD~1

и так далее ...

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