4

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

git difftool other_branch_name file_to_compare

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

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

4

2 回答 2

4

我不知道调用 vimdiff 所需的特定命令,以便在写入模式下打开未提交的文件,但总的来说,git 实际上确实具有配置设置,您可以使用这些配置设置来设置您在使用git difftool. 请参阅git difftool docgit config docdifftool.<tool>.cmd中的设置:

difftool.<tool>.cmd

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

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

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

根据mah 发布的Vimdiff 多个窗口不同读/写权限的链接,我想您可以通过这种方式配置 vimdiff,但我不确定 vimdiff 选项是否真的正确:difftool

$ git config --global difftool.vimdiff.cmd \
"vimdiff -R $LOCAL -c ':se noreadonly' $REMOTE"
于 2013-07-14T17:39:11.590 回答
3

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

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
于 2013-07-14T14:49:28.397 回答