Если вы используете GitHub для облачного хранилища репо, это очень просто: перейдите к своему проекту и щелкните заголовок «коммиты» в таблице, в которой отображается ваш проект
Дэвид
1
Значение «текущей и последней версии» действительно должно быть разъяснено в вопросе.
faintsignal
Ответы:
1171
Я не очень понимаю значение «последней версии».
Поскольку предыдущий коммит можно получить с помощью 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
Предупреждения
@ScottF и @Panzercrisis объясняют в комментариях, что в Windows ~символ должен использоваться вместо ^.
Я хотел что-то вроде верной версии и версии до этого ... git diff head head-1
Rajeev
7
Начиная с Git 1.8.5, @это псевдоним для HEAD. А так как ~и ^то же , когда будет только один совершить назад, я считаю , git diff @~..@гораздо проще набрать.
Андрей
80
@Andrew git showеще проще, так @~..@как это показ по умолчанию.
Амаллой
3
git showпросто печатает сообщение коммита, оно не выводит diff конкретных изменений, по крайней мере, в Git 2.5.4 (Apple Git-61), так что на самом деле это не будет ответом на вопрос OP.
user1944491
1
Проблема в git showтом, что если HEADкоммит слияния, вы не получите то, что ожидаете, так как сам коммит слияния может не иметь никаких изменений сам. git diff HEAD^ HEADпокажет фактические изменения между версиями
RubenLaguna
158
Предполагая, что «текущая версия» является рабочим каталогом (незафиксированные изменения), а «последняя версия» 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) Страница руководства
Cerran
1
Это должен быть принятый ответ, потому что он отвечает цели вопроса.
tgoneil
Как называется «текущая неустановленная версия» в git? Есть ли на самом деле имя?
Матье КАРОФФ
118
Как было отмечено на комментарий по amalloy , если по «текущей и последней версии» вы имеете в виду последнюю фиксацию и фиксации до того, что вы могли бы просто использовать
Используется git show HEAD~1для отображения последнего коммита, и git show HEAD~2т. Д. Для более старых коммитов. Показать только один файл через git show HEAD~2 my_file.
Флориан Брукер
60
Разница между последним, но одним и последним коммитом (плюс текущее состояние, если есть):
git diff HEAD~
или даже (легче набрать)
git diff @~
где @это синоним HEADтекущей ветки и ~означает «дай мне родитель упомянутой ревизии».
Мне вполне нравится git diff HEAD^(а не эквивалентная HEAD~форма). Это немного легче запомнить для такого "старого мерзавца", как я ;-)
sxc731
3
Морковь является проблемой в некоторых терминалах. Приятно иметь возможность
light24bulbs
1
Ответ можно улучшить, объяснив, что значит ~и @что.
Боб Стейн
1
Если мы просто хотим проверить, что зафиксировано в последнем коммите, не используйте его (так как грязные изменения влияют на разницу). Более короткий синтаксис действительно diff HEAD^ HEADдолжен быть git diff @^!. См. Git-scm.com/docs/gitrevisions дляr1^!
Джонни Вонг
@JohnnyWong Спасибо за разъяснения. Я упомянул «текущее состояние», чтобы не запутать читателей.
Во-первых, используйте " git log", чтобы вывести список журналов для хранилища.
Теперь выберите два идентификатора коммита, относящиеся к двум коммитам. Вы хотите увидеть различия ( пример - самый верхний коммит и некоторый более старый коммит (в соответствии с вашими ожиданиями текущей версии и некоторой старой версии) ).
Ответы:
Я не очень понимаю значение «последней версии».
Поскольку предыдущий коммит можно получить с помощью HEAD ^, я думаю, что вы ищете что-то вроде:
Начиная с Git 1.8.5,
@
это псевдоним дляHEAD
, так что вы можете использовать:Следующее также будет работать:
Если вы хотите узнать разницу между головой и любым коммитом, вы можете использовать:
И это запустит ваш визуальный инструмент сравнения (если настроен):
Поскольку сравнение с HEAD является значением по умолчанию, вы можете его опустить (как указано Ориентом ):
Предупреждения
~
символ должен использоваться вместо^
.источник
@
это псевдоним дляHEAD
. А так как~
и^
то же , когда будет только один совершить назад, я считаю ,git diff @~..@
гораздо проще набрать.git show
еще проще, так@~..@
как это показ по умолчанию.git show
просто печатает сообщение коммита, оно не выводит diff конкретных изменений, по крайней мере, в Git 2.5.4 (Apple Git-61), так что на самом деле это не будет ответом на вопрос OP.git show
том, что еслиHEAD
коммит слияния, вы не получите то, что ожидаете, так как сам коммит слияния может не иметь никаких изменений сам.git diff HEAD^ HEAD
покажет фактические изменения между версиямиПредполагая, что «текущая версия» является рабочим каталогом (незафиксированные изменения), а «последняя версия»
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 HEAD~1
для отображения последнего коммита, иgit show HEAD~2
т. Д. Для более старых коммитов. Показать только один файл черезgit show HEAD~2 my_file
.Разница между последним, но одним и последним коммитом (плюс текущее состояние, если есть):
или даже (легче набрать)
где
@
это синонимHEAD
текущей ветки и~
означает «дай мне родитель упомянутой ревизии».источник
git diff HEAD^
(а не эквивалентнаяHEAD~
форма). Это немного легче запомнить для такого "старого мерзавца", как я ;-)~
и@
что.diff HEAD^ HEAD
должен бытьgit diff @^!
. См. Git-scm.com/docs/gitrevisions дляr1^!
Вы также можете сделать это так:
Сравнить с предыдущим коммитом
Сравните с текущим и двумя предыдущими коммитами
источник
Просто используйте
cached
флаг, если вы добавили, но еще не зафиксировали:источник
Быстро и просто, при условии, что вы в мастере:
Пример:
источник
Во-первых, используйте "
git log
", чтобы вывести список журналов для хранилища.Теперь выберите два идентификатора коммита, относящиеся к двум коммитам. Вы хотите увидеть различия ( пример - самый верхний коммит и некоторый более старый коммит (в соответствии с вашими ожиданиями текущей версии и некоторой старой версии) ).
Далее используйте:
или
источник
Если верхний коммит указан HEAD, вы можете сделать что-то вроде этого:
Разница между первым и вторым коммитом:
Разница между первым и третьим коммитом:
Разница между вторым и третьим коммитом:
И так далее...
источник
Я использую Bitbucket с Eclipse IDE с установленным плагином Eclipse EGit .
Я сравниваю файл из любой версии его истории (например, SVN ).
Меню Project Explorer → Файл → щелкните правой кнопкой мыши → Команда → Показать в истории .
Это принесет историю всех изменений в этом файле. Теперь Ctrlнажмите и выберите любые две версии → «Сравнить друг с другом» .
источник
Это также будет работать для тегов (удалите 'uniq' ниже и другие части, если вам нужно увидеть все изменения):
Ниже приведено то же самое, и это может быть полезно для непрерывной интеграции (CI) для микросервисов в монолитном хранилище:
(Кредит - https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo )
источник