Используя Git, как вы можете найти разницу между текущей и последней версией?
git diff last version:HEAD
Используя Git, как вы можете найти разницу между текущей и последней версией?
git diff last version:HEAD
Ответы:
Я не очень понимаю значение «последней версии».
Поскольку предыдущий коммит можно получить с помощью HEAD ^, я думаю, что вы ищете что-то вроде:
git diff HEAD^ HEAD
Начиная с Git 1.8.5, @это псевдоним для HEAD, так что вы можете использовать:
git diff @~..@
Следующее также будет работать:
git show
Если вы хотите узнать разницу между головой и любым коммитом, вы можете использовать:
git diff commit_id HEAD
И это запустит ваш визуальный инструмент сравнения (если настроен):
git difftool HEAD^ HEAD
Поскольку сравнение с HEAD является значением по умолчанию, вы можете его опустить (как указано Ориентом ):
git diff @^
git diff HEAD^
git diff commit_id
~символ должен использоваться вместо ^.@это псевдоним для HEAD. А так как ~и ^то же , когда будет только один совершить назад, я считаю , git diff @~..@гораздо проще набрать.
git showеще проще, так @~..@как это показ по умолчанию.
git showпросто печатает сообщение коммита, оно не выводит diff конкретных изменений, по крайней мере, в Git 2.5.4 (Apple Git-61), так что на самом деле это не будет ответом на вопрос OP.
git showтом, что если HEADкоммит слияния, вы не получите то, что ожидаете, так как сам коммит слияния может не иметь никаких изменений сам. git diff HEAD^ HEADпокажет фактические изменения между версиями
Предполагая, что «текущая версия» является рабочим каталогом (незафиксированные изменения), а «последняя версия» HEAD(последние подтвержденные изменения для текущей ветви), просто выполните
git diff HEAD
Кредит на следующее идет пользователю Cerran.
И если вы всегда пропускаете область подготовки, -aкогда делаете коммит, то вы можете просто использовать git diff.
Резюме
git diff показывает неустановленные изменения.git diff --cached показывает поэтапные изменения.git diff HEAD показывает все изменения (как поэтапные, так и не постановочные).Источник: git-diff (1) Страница руководства - Cerran
-aкогда делаете коммит, то вы можете просто использовать git diff. <1> git diffпоказывает неустановленные изменения. <2> git diff --cachedпоказывает поэтапные изменения. <3> git diff HEADпоказывает все изменения (как поэтапные, так и не поэтапные). Источник: git-diff (1) Страница руководства
Как было отмечено на комментарий по amalloy , если по «текущей и последней версии» вы имеете в виду последнюю фиксацию и фиксации до того, что вы могли бы просто использовать
git show
git show HEAD~1для отображения последнего коммита, и git show HEAD~2т. Д. Для более старых коммитов. Показать только один файл через git show HEAD~2 my_file.
Разница между последним, но одним и последним коммитом (плюс текущее состояние, если есть):
git diff HEAD~
или даже (легче набрать)
git diff @~
где @это синоним HEADтекущей ветки и ~означает «дай мне родитель упомянутой ревизии».
git diff HEAD^(а не эквивалентная HEAD~форма). Это немного легче запомнить для такого "старого мерзавца", как я ;-)
~и @что.
diff HEAD^ HEADдолжен быть git diff @^!. См. Git-scm.com/docs/gitrevisions дляr1^!
Просто используйте cachedфлаг, если вы добавили, но еще не зафиксировали:
git diff --cached --color
Во-первых, используйте " git log", чтобы вывести список журналов для хранилища.
Теперь выберите два идентификатора коммита, относящиеся к двум коммитам. Вы хотите увидеть различия ( пример - самый верхний коммит и некоторый более старый коммит (в соответствии с вашими ожиданиями текущей версии и некоторой старой версии) ).
Далее используйте:
git diff <commit_id1> <commit_id2>
или
git difftool <commit_id1> <commit_id2>
Если верхний коммит указан HEAD, вы можете сделать что-то вроде этого:
commit1 -> HEAD
commit2 -> HEAD~1
commit3 -> HEAD~2
Разница между первым и вторым коммитом:
git diff HEAD~1 HEAD
Разница между первым и третьим коммитом:
git diff HEAD~2 HEAD
Разница между вторым и третьим коммитом:
git diff HEAD~2 HEAD~1
И так далее...
Я использую Bitbucket с Eclipse IDE с установленным плагином Eclipse EGit .
Я сравниваю файл из любой версии его истории (например, SVN ).
Меню Project Explorer → Файл → щелкните правой кнопкой мыши → Команда → Показать в истории .
Это принесет историю всех изменений в этом файле. Теперь Ctrlнажмите и выберите любые две версии → «Сравнить друг с другом» .
Это также будет работать для тегов (удалите 'uniq' ниже и другие части, если вам нужно увидеть все изменения):
git diff v1.58 HEAD
Ниже приведено то же самое, и это может быть полезно для непрерывной интеграции (CI) для микросервисов в монолитном хранилище:
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 )