配置git difftool来编辑未提交的文件?

时间:2013-07-14 11:33:10

标签: git difftool

我想比较两个文件,一个文件在另一个分支中,另一个是当前分支中同一文件的未提交版本。所以我这样做:

git difftool other_branch_name file_to_compare

现在我想在当前分支中编辑未提交的版本,但我不能,因为vimdiff以只读模式打开...

那么使用git difftool并允许修改的解决方案是什么?

2 个答案:

答案 0 :(得分:3)

我不知道调用vimdiff所需的特定命令,以便在写入模式下打开未提交的文件, 但通常 ,git确实有配置您可以使用设置来设置在使用git difftool时调用difftool的方式。请参阅the git difftool docthe git config doc中的difftool.<tool>.cmd设置:

  

difftool.<tool>.cmd

     

指定调用指定diff工具的命令。在shell中使用以下变量评估指定的命令:$LOCAL设置为包含diff前映像内容的临时文件的名称,$REMOTE设置为临时名称包含diff后映像内容的文件。

所以你可以做这样的事情来配置你的difftool:

$ git config --global difftool.myDifftool.cmd \
"myDifftool --read-only-flag $LOCAL --editable-flag $REMOTE"

基于Vimdiff multiple windows different read/write permission mah posted的链接,我想您可以通过这种方式为vimdiff配置difftool,但我不确定vimdiff选项是否确实正确:< / p>

$ git config --global difftool.vimdiff.cmd \
"vimdiff -R $LOCAL -c ':se noreadonly' $REMOTE"

答案 1 :(得分:2)

为什么不创建另一个版本的临时文件:

git show other_branch_name:file_to_compare > diff.file_to_compare
vimdiff file_to_compare diff.file_to_compare
rm -rf diff.file_to_compare