首页 > 解决方案 > 是否可以在 git diff 中配置临时文件夹?

问题描述

当调用git difftool存储库时,git 将本地存储库中修改的文件与远程存储库中的匹配文件进行比较。为此,它为远程创建一个临时文件,设置变量LOCALREMOTE调用为 git 配置中的差异指定的任何工具。

默认情况下,临时文件是在/tmp/<hash>_filename. 是否可以更改此默认位置?

为什么要这么做?

长话短说,我正在通过 Windows 子系统为 linux 使用 git,我想使用 Windows 工具进行差异和合并。问题是,/tmp无法从 Windows 端访问,因此我需要将 git 创建临时文件的默认位置移动到 Windows 可访问的位置。

我尝试了什么:

到目前为止,我能找到的只是一个建议,sudo mount -B /tmp /mnt/c/tmp但这似乎不起作用(/tmp仍然指向与以前相同的目录......)

标签: gitgit-difftool

解决方案


您可以尝试设置TMPDIR环境变量。

POSIX手册:

TMPDIR 这个变量应该代表一个目录的路径名,该路径名可用于需要一个地方来创建临时文件的程序。


快速浏览了一下 git 代码(git/builtin/difftool.c),我认为目前不支持配置 temp 目录:

/* Setup temp directories */
tmp = getenv("TMPDIR");
xsnprintf(tmpdir, sizeof(tmpdir), "%s/git-difftool.XXXXXX", tmp ? tmp : "/tmp");

似乎 git 正在TMPDIR取值,或者"/tmp",如果TMPDIR未定义。


推荐阅读