But*_*840 38 git version-control diff dvcs
有许多SO问题显示如何git diff
在差异查看器中查看命令的输出,如使用git difftool
或其他方式.我不是在问git diff
.
我想git show <previous commit sha1>
在像diff这样的差异查看器中看到输出.我怎样才能做到这一点?
geo*_*ock 45
您可以使用它git difftool
来显示单个提交.
假设您想要使用sha1查看提交abc123
:
git difftool abc123~1 abc123
Run Code Online (Sandbox Code Playgroud)
(~1
告诉git移动到之前的提交,abc123~1
之前是提交abc123
)
如果你经常使用它,你可以制作一个自定义的git命令,使其更容易:
使用以下内容创建一个名为git-showtool
somewhere 的文件$PATH
:
git difftool $1~1 $1
Run Code Online (Sandbox Code Playgroud)授予该文件执行权限:
chmod +x ~/path/to/git-showtool
Run Code Online (Sandbox Code Playgroud)使用该命令 git showtool <sha1 or tag or ...>
sag*_*ian 18
基于georgebrock的响应,您可以在.gitconfig中创建一个别名,如下所示:
showtool = "!showci () { rev=${1:-HEAD}; git difftool $rev~1 $rev; }; showci $1"
Run Code Online (Sandbox Code Playgroud)
然后你可以运行它git showtool abc123
(无需为此创建单独的shell脚本).如果省略修订版,它将默认为HEAD.
翻译sagittarian对git savvy的建议,如果你是windows用户,请将它添加到你的全局.gitconfig文件中,该文件位于C:\ Users [用户名]中:
[alias]
showtool = "!showci () { rev=${1:-HEAD}; git difftool $rev~1 $rev; }; showci $1"
Run Code Online (Sandbox Code Playgroud)
或者您可以在get bash shell中执行以下命令:
git config --global alias.showtool '!showci () { rev=${1:-HEAD}; git difftool $rev~1 $rev; }; showci $1'
Run Code Online (Sandbox Code Playgroud)
这将为您更改.gitconfig文件.
小智 5
基于 sagitarrian 的回答,这里有一个更通用的 rev 语法的小改动:
showtool = "!showci () { rev=$(git rev-parse \"${*:-HEAD}\"); git difftool $rev~1 $rev; }; showci"
Run Code Online (Sandbox Code Playgroud)
我rev-parse
用来透明地允许复杂的 rev 表达式。
我$1
在最后删除了,因为调用别名后跟参数;它仅在使用时被忽视,$1
但会破坏$*
行为。
这允许做一些不错的事情,例如:
git showtool :/some nasty bug
Run Code Online (Sandbox Code Playgroud)