Используя Git, как вы можете найти разницу между текущей и последней версией?
git diff last version:HEAD
Используя Git, как вы можете найти разницу между текущей и последней версией?
git diff last version:HEAD
Я не очень понимаю значение слова "последняя версия".
Поскольку предыдущий коммит можно получить с помощью 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
~
должен использоваться вместо ^
.Предполагая, что "текущая версия" - это рабочий каталог (незавершенные изменения), а "последняя версия" - HEAD
(последние исправленные изменения для текущей ветки), просто выполните
git diff HEAD
кредит для следующих пользователей Cerran
И если вы всегда пропускаете промежуточную область с помощью -a
, когда вы совершаете фиксацию, вы можете просто использовать git diff
.
Резюме
git diff
показывает неустановленные изменения.git diff --cached
показывает поэтапные изменения.git diff HEAD
показывает все изменения (как поэтапные, так и нестационарные).Источник: git -diff (1) Страница руководства - Cerran
Как указано comment amalloy, если по "текущему и последнему версии" вы имеете в виду последнюю фиксацию и фиксацию до этого, вы можете просто использовать
git show
Разница между последней, но одной фиксацией и последним фиксацией (плюс текущее состояние, если есть):
git diff HEAD~
или даже (проще для ввода)
git diff @~
Вы тоже можете сделать это так:
Сравнить с предыдущим коммитом
git diff --name-status HEAD~1..HEAD
Сравните с текущими и предыдущими двумя коммитами
git diff --name-status HEAD~2..HEAD
Просто используйте cached
флаг, если вы добавили, но еще не зафиксировали:
git diff --cached --color
Быстро и просто, если вы на хозяине:
git diff (checkout_id):file.txt file.txt
Пример:
git diff asdfioei91819280din198:file.txt file.txt
Во-первых, используйте "git log
", чтобы перечислить журналы в репо.
Теперь выберите две команды фиксации, перманентные для двух коммитов, вы хотите увидеть различия ( Пример - верхняя часть фиксации и некоторая старшая фиксация [согласно вашему ожиданию текущей версии и некоторая старая версия]).
Затем используйте:
git diff <commit_id1> <commit_id2>
или
git difftool <commit_id1> <commit_id2>
Я использую bitbucket с Eclipse IDE с установленным плагином Eclipse EGit. Я сравниваю файл из любой версии его истории (например, SVN).
Project Explorer> Файл правой кнопкой мыши> Команда> Показать в истории
Это принесет историю всех изменений в этом файле. Теперь нажмите CTRL и выберите любые две версии> "Сравнить друг с другом"
Это также будет работать для тегов. (удалите "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)
Для проверки полных изменений:
git diff <commit_Id_1> <commit_Id_2>
Для проверки только измененных/добавленных/удаленных файлов:
git diff <commit_Id_1> <commit_Id_2> --name-only
ПРИМЕЧАНИЕ. Для проверки diff без фиксации между ними вам не нужно указывать идентификаторы коммитов.
Если верхний коммит указан 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
и так далее...