Найти разницу между текущей и последней версией?

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

git diff last version:HEAD

Ответ 1

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

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

git diff HEAD^ HEAD

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

git diff @[email protected]

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

git show

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

git diff commit_id HEAD

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

git difftool HEAD^ HEAD

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

git diff @^
git diff HEAD^
git diff commit_id

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

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

Ответ 2

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

git diff HEAD

кредит для следующих пользователей Cerran

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

Резюме

  • git diff показывает неустановленные изменения.
  • git diff --cached показывает поэтапные изменения.
  • git diff HEAD показывает все изменения (как поэтапные, так и нестационарные).

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

Ответ 3

Как указано comment amalloy, если по "текущему и последнему версии" вы имеете в виду последнюю фиксацию и фиксацию до этого, вы можете просто использовать

git show

Ответ 4

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

git diff HEAD~

или даже (проще для ввода)

git diff @~

Ответ 5

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

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

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

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

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

Ответ 6

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

git diff --cached --color

Ответ 7

Быстро и просто, если вы на хозяине:

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

Пример:

    git diff asdfioei91819280din198:file.txt file.txt

Ответ 8

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

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

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

git diff <commit_id1> <commit_id2>

или

git difftool <commit_id1> <commit_id2>

Ответ 9

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

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

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

Ответ 10

Это также будет работать для тегов. (удалите "Uniq" ниже и другие части, если вам нужно увидеть все изменения)

 git diff v1.58 HEAD 

Ниже то же самое, что может быть полезно для CI для микросервисов в monorepo

git diff v1.58 HEAD  --name-only | sort -u | awk 'BEGIN {FS="/"} {print $1}' | uniq
<Folder Name> 

(кредит - https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo)

Ответ 11

Для проверки полных изменений:

  git diff <commit_Id_1> <commit_Id_2>

Для проверки только измененных/добавленных/удаленных файлов:

  git diff <commit_Id_1> <commit_Id_2> --name-only

ПРИМЕЧАНИЕ. Для проверки diff без фиксации между ними вам не нужно указывать идентификаторы коммитов.

Ответ 12

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

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

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

git diff HEAD~1 HEAD

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

git diff HEAD~2 HEAD

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

git diff HEAD~2 HEAD~1

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