我使用命令行git和Kaleidoscope来执行代码审查。当我将一个分支合并到另一个分支中并键入
git difftool万花筒只显示“没有为提交暂存”的更改,不显示“未合并的路径”或“更改为提交”。
命令行显示其余的内容。
知道为什么吗?
这是我的~/.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发布于 2012-08-02 03:00:46
简而言之:您希望在命令行中键入的是git difftool HEAD,而不是git difftool。
长答案:这是正常的git行为,如果你没有意识到发生了什么,这是一种令人沮丧的行为。我不确定为什么命令行diff能像您期望的那样工作,但git diff和git difftool的性能应该与git手册页相似:
git diff --选项...此表单用于查看您相对于索引所做的更改(下一次提交的暂存区)。换句话说,差异就是你可以告诉git进一步添加到索引中的东西,但你仍然没有。
因此,git diff和git difftool应该只向您显示未暂存的更改。
如果您希望查看暂存的更改,则应改用git diff --cached和git difftool --cached:
git diff --选项--缓存...此表单用于查看您为下一次提交所做的更改。通常,您希望与最新的提交进行比较,因此如果您不提供,它将缺省为HEAD。如果HEAD不存在(例如,未生成的分支)且未给出,则会显示所有阶段性更改。--staged是--cached的同义词。
最后,如果您希望看到分阶段和未分阶段的更改,可以使用第三种形式,即git diff HEAD或git difftool HEAD
git diff --options --此表单用于查看工作树中相对于命名的更改。您可以使用HEAD将其与最近的提交进行比较,或者使用分支名称与不同分支的tip进行比较。
发布于 2013-04-25 01:34:14
git difftool --staged将会给你一个确切的答案。
本例中的staged是cached的同义词,不过我发现staged更容易记住。
https://stackoverflow.com/questions/11764148
复制相似问题