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'
在 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'