如何让我的git集成Kaleidoscope显示即将提交的所有文件?

时间:2012-08-01 17:06:26

标签: git diff

我正在使用命令行git和Kaleidoscope来执行我的代码审核。当我将分支合并到另一个分支并键入

git difftool

Kaleidoscope仅显示“未提交以进行提交”的更改,并且不显示“未合并路径”或“已更改为已提交”。

命令行显示其余内容。

知道为什么吗?

这是我的〜/ .gitconfig

[user]
        name = Dirty Henry
        email = dirty@henry.com
[core]
        excludesfile = /Users/dirty/.gitignore_global
        editor = mate
[difftool "Kaleidoscope"]
        cmd = ksdiff-wrapper git \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
        cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
        trustExitCode = true
[diff]
        tool = Kaleidoscope
[credential]
        helper = osxkeychain
[difftool]
        prompt = false

2 个答案:

答案 0 :(得分:15)

简短回答:您希望在命令行上输入的内容为git difftool HEAD,而不是git difftool

答案很长:这是正常的git行为,如果你没有意识到发生了什么,那就太令人沮丧了。我不确定为什么命令行差异按预期工作,但git diffgit difftool应该按照git手册页的方式执行:

  

git diff [--options] [ - ] [< path> ...]              此表单用于查看您对索引所做的更改(下一次提交的暂存区域)。换一种说法,              差异是你可以告诉git进一步添加到索引但你仍然没有。你可以上演这些              使用git-add(1)进行更改。

因此git diffgit difftool只会向您显示未分期更改。

如果您想查看暂存更改,请改为使用git diff --cachedgit difftool --cached

  

git diff [--options] --cached [< commit>] [ - ] [< path> ...]              此表单用于查看您为下一次提交相对于命名的< commit>而进行的更改。通常你会              想要与最新的提交进行比较,所以如果你不提供< commit>,它默认为HEAD。如果HEAD不存在              (例如,未分支的分支)和< commit>没有给出,它显示了所有阶段性的变化。 --staged是--cached的同义词。

最后,如果您想要查看分阶段和非分阶段更改,请使用第三种形式git diff HEADgit difftool HEAD

  

git diff [--options]< commit> [ - ] [< path> ...]此表单可供查看   工作树中相对于命名的更改   <提交取代。您可以使用HEAD将其与最新提交进行比较,或者a   分支名称与不同分支的小费进行比较。

答案 1 :(得分:1)

git difftool --staged

会给你这个。

在这种情况下,

stagedcached的同义词,但我发现staged更容易记住。