我想比较两个文件,一个文件在另一个分支中,另一个是当前分支中同一文件的未提交版本。所以我这样做:
git difftool other_branch_name file_to_compare
现在我想在当前分支中编辑未提交的版本,但我不能,因为 vimdiff 是以只读模式打开的......
那么使用 git difftool 并允许修改的解决方案是什么?
我不知道调用 vimdiff 所需的特定命令,以便在写入模式下打开未提交的文件,但总的来说,git 实际上确实具有配置设置,您可以使用这些配置设置来设置您在使用git difftool
. 请参阅git difftool doc和git 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"
为什么不直接创建另一个版本的临时文件:
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