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'