我正在使用命令行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 diff并git difftool应按照git的手册页类似的表演:
git diff [--options] [ - ] [<path> ...]此表单用于查看您对索引所做的更改(下一次提交的暂存区域).换句话说,差异是你可以告诉git进一步添加到索引但你还没有.您可以使用git-add(1)暂存这些更改.
所以git diff,git difftool应该只显示未分级的更改.
如果你想看到分阶段的变化,你应该使用git diff --cached而git 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将其与最新提交进行比较,或使用分支名称与其他分支的提示进行比较.