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

Показать 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 добавил соус и бутылку Dr Pepper в список
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> 

Связанный контент