有许多SO问题显示如何使用git diff
或其他方式在差异查看器中查看git difftool
命令的输出。我不是在询问git diff
。
我希望在像diff这样的差异查看器中看到git show <previous commit sha1>
的输出。我怎么能这样做?
答案 0 :(得分:41)
您可以使用git difftool
来显示单个提交。
假设您想要使用sha1 abc123
:
git difftool abc123~1 abc123
(~1
告诉git移动到上一次提交,因此abc123~1
是abc123
之前的提交
如果您经常使用此功能,您可以制作一个自定义git命令以使其更容易:
在git-showtool
的某处创建名为$PATH
的文件,其中包含以下内容:
git difftool $1~1 $1
授予该文件执行权限:
chmod +x ~/path/to/git-showtool
使用命令git showtool <sha1 or tag or ...>
答案 1 :(得分:18)
基于georgebrock的响应,您可以在.gitconfig中创建一个别名,如下所示:
showtool = "!showci () { rev=${1:-HEAD}; git difftool $rev~1 $rev; }; showci $1"
然后您可以使用git showtool abc123
运行它(无需为此创建单独的shell脚本)。如果省略修订版,它将默认为HEAD。
答案 2 :(得分:9)
翻译sagittarian对较少git精明的建议,将其添加到您的全局 .gitconfig 文件中,如果您是Windows,则该文件位于 C:\ Users [用户名] 用户:
isValid? --> form.firstName0.$valid = true
isValid? --> form.firstName1.$valid = false
isValid? --> form.firstName2.$valid = true
或者您可以在get bash shell中执行以下命令:
[alias]
showtool = "!showci () { rev=${1:-HEAD}; git difftool $rev~1 $rev; }; showci $1"
将为您更改 .gitconfig 文件。
答案 3 :(得分:3)
在sagitarrian的答案的基础上,对于更通用的rev语法,这是一个小改动:
showtool = "!showci () { rev=$(git rev-parse \"${*:-HEAD}\"); git difftool $rev~1 $rev; }; showci"
我使用rev-parse
透明地允许复杂的rev表达式。
我最后删除了$1
,因为别名被调用后跟参数;仅使用$1
时会忽略它,但会中断$*
行为。
这样可以做出很好的事情:
git showtool :/some nasty bug
答案 4 :(得分:0)
PATH中的git-showcommit
文件(可执行文件)应如下所示:
#!/bin/bash
git difftool --dir-diff $1^..$1
然后您可以通过git showcommit HEAD
或git showcommit a5b26d5
来调用新工具