git показать предыдущий коммит, который изменил файл без журнала git

В git мы можем легко создавать ревизии, указывающие на предыдущие коммиты, такие как HEAD~HEAD^ и показать файлы на этих ревизиях, как

git show HEAD~:myfile

Каков синтаксис, чтобы показать предыдущую версию myfile без предварительной консультации git log получить хеш коммита?

Я также использую fugitive в vim а иногда нужно открыть предыдущую версию файла, используя :Gedit, Но я не знаю, что представить в качестве аргумента.

1 ответ

Решение
git show $(git log -m --first-parent --format=%H HEAD~ -2 -- path/to/file | tail -1):path/to/file

Примечание: это решение требует, чтобы вы указали путь дважды, и может быть достаточно многословным для ввода каждый раз. Псевдоним, возможно, будет лучше.

git config alias.prev '! f(){ git show $(git log -m --first-parent --format=%H HEAD~ -2 -- "$1" | tail -1):"$1"; }; f'

Чтобы получить предыдущий хеш:

git config alias.prevhash '! f(){ git rev-parse $(git log -m --first-parent --format=%H HEAD~ -2 -- "$1" | tail -1):"$1"; }; f'
Другие вопросы по тегам