Показать git diff HEAD~1 файла, который не был затронут в последних коммитах

В Git, чтобы увидеть отличия от предыдущего коммита, я запускаю это:

git diff HEAD~1

Чтобы увидеть коммиты, связанные с одним file Я бы запустил это:

git log --oneline file

Но если я запускаю следующее и файл, на который я хочу сослаться, не был изменен во время последнего коммита, Git ничего не показывает.

git diff HEAD~1 file

Как я могу посмотреть различия в пути, похожем на HEAD но в конкретный файл, если этот файл не был зафиксирован в ссылке, на которую указывает HEAD?

1 ответ

Вам придется явно ссылаться на SHA, если вы хотите увидеть различие файла, который не был изменен между последним коммитом и предыдущим (HEAD~1).

Запустите журнал, чтобы увидеть несколько SHA, которые вы хотите просмотреть.

git log --oneline <file>

Пример вывода следующий:

af46919 выскоблили - вместо этого называется местная пиццерия
b09206c добавил в список соус и бутылку перца
ad90f90 замесить тесто и оставить на ночь

Теперь, если вы хотите увидеть разницу изменений, внесенных в файл, вы ссылаетесь на него через второй SHA, который вы видите. В этом случае у нас есть это из примера:

git diff b09206c <file>

Выше это сокращение для

git diff b09206c HEAD <file>

Или подумайте об этом так:

git diff <start-commit-SHA> <future-commit-SHA> <file>

Чтобы запустить его как одну команду (например, для скрипта), вы можете сделать:

git log --oneline <file> |awk 'NR==2{print $1}'|xargs -I {} git diff {} <file> 
Другие вопросы по тегам