- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已将我的 git difftool
设置为使用 winmerge
。它已经工作了很长一段时间。但是今天突然不行了。 git difftool
曾经在脏文件上一个接一个地调用 winmerge
,但现在不是了。该命令只是返回,好像什么也没发生。没有错误信息。
我仔细检查了一下,确实有几个脏文件(如 git status
所示)
关于如何解决问题有什么建议吗?谢谢!
已更新
感谢 fabspro 的建议。我取得了一些进步,但仍然未能解决问题。
我对 winmerge
作为 difftool
的原始设置是这样的(在我的 ~/.gitconfig
文件中):
[diff]
tool = winmerge
现在我明白这将指示 git difftool
使用脚本
C:\Program Files\Git\mingw64\libexec\git-core\mergetools
在我的电脑上。我将在下面展示这个脚本的内容。我相信里面的东西完好无损,因为没有人碰过它,而且它在今天之前工作。
然后我也尝试直接调用WinMerge
,所以我改变了~/.gitconfig
中的指令到这个
[diff]
tool = mywinmerge
[difftool "mywinmerge"]
cmd = "\"C:/Program Files (x86)/WinMerge/WinMergeU.exe\" \"$LOCAL\" \"$REMOTE\""
这个想法来自这个 SO 答案:https://stackoverflow.com/a/24337687/1168041
我仔细检查了路径,我也检查了我的 git bash
我可以直接调用 WinMerge
(不带参数 --与上面的配置不同)使用此命令:
$ /c/Program\ Files\ \(x86\)/WinMerge/WinMergeU.exe
仍然,我无法让我的 git difftool
命令工作(昨天还在工作)
还有什么想法吗?谢谢!
附录
我的 C:\Program Files\Git\mingw64\libexec\git-core\mergetools
的内容
diff_cmd () {
"$merge_tool_path" -u -e "$LOCAL" "$REMOTE"
return 0
}
merge_cmd () {
# mergetool.winmerge.trustExitCode is implicitly false.
# touch $BACKUP so that we can check_unchanged.
touch "$BACKUP"
"$merge_tool_path" -u -e -dl Local -dr Remote \
"$LOCAL" "$REMOTE" "$MERGED"
check_unchanged
}
translate_merge_tool_path() {
# Use WinMergeU.exe if it exists in $PATH
if type -p WinMergeU.exe >/dev/null 2>&1
then
printf WinMergeU.exe
return
fi
# Look for WinMergeU.exe in the typical locations
winmerge_exe="WinMerge/WinMergeU.exe"
for directory in $(env | grep -Ei '^PROGRAM(FILES(\(X86\))?|W6432)=' |
cut -d '=' -f 2- | sort -u)
do
if test -n "$directory" && test -x "$directory/$winmerge_exe"
then
printf '%s' "$directory/$winmerge_exe"
return
fi
done
printf WinMergeU.exe
}
最佳答案
我找到了答案——问题是误报。对不起!
发生的事情是我对 git difftool
的确切语义感到困惑。
像 git diff
一样,git difftool
显示工作目录和 index 之间的区别,而不是 HEAD .当我运行我的命令时,我已经暂存了我的更改(即将它们放入索引),所以虽然 HEAD 有差异,但索引没有差异>,因此命令的无声行为。我应该用来显示差异的命令是 git difftool HEAD
而不仅仅是 git difftool
我想这个故事的寓意是:如果 git difftool
没有显示任何内容,请尝试 git diff
。如果是后者也什么都没有显示,那么可能没有区别,可能 git difftool
我想用下面这张精彩的图来结束这个回答来自“A Visual Git Reference”,可以作为一个很好的提醒 git diff
与 git diff HEAD
关于git difftool 突然停止工作/如何排除故障?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46289410/
这个问题在这里已经有了答案: Why does "git difftool" not open the tool directly? (2 个答案) 关闭 6 年前。 当使用 git difftoo
我有 2 个文件夹(具有不同的代码)并初始化了 git。但是当我这样做的时候 git difftool -t meld 一个存储库运行良好,并询问我是否要在 meld 中打开文件进行比较。另一个只是在
我正在使用 kdiff3 作为 difftool。当我使用 git difftool 命令时,它还会向我显示完全相同的文件。甚至 kdiff3 也会 pop 一条消息,指出这些文件是“二进制相等的”(
当我执行 git difftool 时,我收到消息 Hit return to launch 'araxis':。我发现我可以通过按 CTRL-C 来终止整个比较,但是跳过单个文件怎么样? 这可能吗?
我的 ~/.gitconfig 中有以下配置 [diff] tool = vimdiff [diftool] prompt = false 当我启动 git difftool 时,它默
是否可以让 git difftool 命令打开一个目录,比较更改的文件和暂存/检查的文件? 理想情况下,如果有 2 个文件已更改,它们将是唯一显示的 2 个,但在目录比较中。 我读过有关让 git 并
我已将我的 git difftool 设置为使用 winmerge。它已经工作了很长一段时间。但是今天突然不行了。 git difftool 曾经在脏文件上一个接一个地调用 winmerge,但现在不
我已将 Meld 配置为我的 difftool。我很确定它配置正确,因为如果我这样做 git config -l ,我得到 merge.tool=meld diff.tool=meld mergeto
我正在尝试在 Windows 8.1 系统上的 Git Bash 中使用 KDiff3 作为 difftool,我承认我对 Git 很陌生。当我尝试将暂存文件与提交文件进行比较时,我无法打开 KDif
我已经将 Beyond Compare 配置为 difftool。 当我运行 $ git difftool 时,它会打开 BC 中的所有 diff 文件,但顺序是,即第一个 diff 文件打开,我必须
我使用 Windows 版 git bash 和 Beyond & Compare 作为我的差异工具(但同样的事情发生在任何外部差异工具上)。 我希望我的终端不要等待 difftool 退出以返回终端
我在文件 .gitconfig 中为 KDiff3 配置了以下 difftool, [difftool "kdiff3"] external = '"C:/Program Files/KDif
看来git difftool执行外部命令时,没有正确引用参数。 如果 .gitconfig 包含以下几行: [difftool.echo] cmd = echo "$LOCAL" "$REMOTE
我有许多新文件以及一些已添加到我的分支的修改过的文件,当我执行 git difftool master 时,它会比较所有修改过的文件并打开所有新文件。我看到类似的东西 Launching WinMer
我这样配置 git: git config --global diff.tool meld 当我运行时: git difftool 我收到以下消息: Viewing: 'hello.txt' Hit
是否可以通过 git add --patch 配置 Git 以使用我配置的 difftool? 我想通过我自己的 difftool 选择要添加到索引的更改。 最佳答案 不,不幸的是。 我想我可以看到工
默认的 git diff 行为是依次打开每个 diff 文件(在打开下一个文件之前等待上一个文件关闭)。 我正在寻找一种同时打开所有文件的方法 - 例如,在 BeyondCompare 中,这将在同一
这个问题在这里已经有了答案: Show both staged & working tree in git diff? (3 个答案) 关闭 5 年前。 有没有办法查看同一文件的 staged 和
当使用“git difftool”时,当其中一个文件是最新版本时,它会将相对路径传递给外部 diff 应用程序。 ~/.gitconfig [difftool "echo"] cmd = ec
我想在单一 View 中查看对所有文件的更改,如图所示;最好选择两个修订版并从 GUI 启动 diff。 我能得到的最接近的是启动 git difftool -t meld -d 2e9c5b 4fc
我是一名优秀的程序员,十分优秀!