В 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>