git 显示修改文件的先前提交而没有 git 日志

git show previous commit that modified a file without git log

在 git 中,我们可以轻松构建指向先前提交的修订,如 HEAD~ HEAD^ 并显示有关这些修订的文件,如

git show HEAD~:myfile

在不先咨询 git log 获取提交哈希的情况下显示以前版本的 myfile 的语法是什么?

我也在 vim 中使用 fugitive,有时需要使用 :Gedit 打开文件的先前版本。但我不知道该提供什么作为参数。

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 -- "" | tail -1):""; }; f'

获取之前的哈希:

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