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

git difftool other_branch_name file_to_compare

现在我想在当前分支中编辑未提交的版本,但是我不能,因为vimdiff是以只读模式打开的…
那么,使用git difftool并允许修改的解决方案是什么?

最佳答案

我不知道调用vimdiff以使未提交的文件以写模式打开所需的特定命令,但一般来说,git确实有配置设置,可以用来设置在使用git difftool时如何调用difftool。参见the git difftool docthe git config doc中的difftool.<tool>.cmd设置:
difftool.<tool>.cmd
指定调用指定diff工具的命令。在shell中使用以下可用变量计算指定的命令:$LOCAL设置为包含diff pre-image内容的临时文件的名称,$REMOTE设置为包含diff post-image内容的临时文件的名称。
所以您可以这样配置difftool:

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

基于到Vimdiff multiple windows different read/write permission的链接,我想您可以这样为vimdiff配置difftool,但我不确定vimdiff选项是否真的正确:
$ git config --global difftool.vimdiff.cmd \
"vimdiff -R $LOCAL -c ':se noreadonly' $REMOTE"

07-24 13:30