如何在像meld,kdiff3等差异查看器中查看`git show`的输出

时间:2013-07-09 21:07:51

标签: git version-control diff dvcs

有许多SO问题显示如何使用git diff或其他方式在差异查看器中查看git difftool命令的输出。我不是在询问git diff

我希望在像diff这样的差异查看器中看到git show <previous commit sha1>的输出。我怎么能这样做?

5 个答案:

答案 0 :(得分:41)

您可以使用git difftool来显示单个提交。

假设您想要使用sha1 abc123

查看提交
git difftool abc123~1 abc123

~1告诉git移动到上一次提交,因此abc123~1abc123之前的提交

如果您经常使用此功能,您可以制作一个自定义git命令以使其更容易:

  1. git-showtool的某处创建名为$PATH的文件,其中包含以下内容:

    git difftool $1~1 $1
    
  2. 授予该文件执行权限:

    chmod +x ~/path/to/git-showtool
    
  3. 使用命令git showtool <sha1 or tag or ...>

  4. 利润。

答案 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 HEADgit showcommit a5b26d5来调用新工具