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

Dir*_*nry 6 git diff

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

git difftool
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Sim*_*lli 15

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

答案很长:这是正常的git行为,如果你没有意识到发生了什么,那就太令人沮丧了.我不知道为什么命令行DIFF是您正常工作,但两者git diffgit difftool应按照git的手册页类似的表演:

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

所以git diff,git difftool应该只显示未分级的更改.

如果你想看到分阶段的变化,你应该使用git diff --cachedgit difftool --cached不是:

git diff [--options] --cached [<commit>] [ - ] [<path> ...]此表单用于查看您为下一次提交相对于命名<commit>而进行的更改.通常,您希望与最新提交进行比较,因此如果您不提供<commit>,则默认为HEAD.如果HEAD不存在(例如,未绑定的分支)并且未给出<commit>,则它显示所有分阶段的更改.--staged是--cached的同义词.

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

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