问题标签 [git-difftool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
93 浏览

git - 在编写 git difftool 时,该工具有没有办法知道正在比较哪个文件?

我尝试为这个问题编写一个简单的 difftool -验证 Git 提交是否只移动行- 它可以工作......我猜很好,但有一个问题。

当要求它在两次提交之间进行差异时,如下所示:

然后对于每个修改过的文件,使用来自每个提交的快照创建两个临时文件,然后调用该工具。

然而,这意味着该工具无法报告哪个文件实际上正在被比较,因为文件名可能是这样的:

所以我的问题是,有什么方法可以让我在 .gitconfig 文件中添加更多配置,或者是否有诸如环境变量之类的东西,可以用来告诉工具实际比较的是哪个文件?

这个特定工具的 .gitconfig 文件如下所示:

0 投票
3 回答
390 浏览

git - 为什么 git difftool 返回“无法运行 git-difftool--helper”错误?

git difftool 停止工作,我不知道为什么。

vimdiff已安装/bin/vimdiff并正常工作。

  • --tool将 替换为 以外的其他内容时会发生同样的问题vimdiff
  • 它发生在该机器上的任何 repo 上,因此它不是特定于 repo 的问题。
  • 试图通过yum reinstall git222-core.x86_64. 重新安装成功,但问题仍然存在。
  • git difftool过去曾经在同一台机器上工作,所以我的猜测是机器的配置发生了变化并导致了这种情况。
  • 其他 git 命令(状态、差异、提交、推送等)正常工作。问题似乎仅限于 git difftool。

git 版本为 2.22.3,运行于 CentOS Linux release 7.7.1908 (Core)

知道可能出了什么问题以及如何进一步调试吗?

0 投票
0 回答
182 浏览

visual-studio-code - 如何在 git push 之前在 UI 中的 PR 中显示更改的代码

我正在同时使用 VScode 和 git,我想知道是否有一种方法或插件可以在我之前在此 PR 中显示 UI 中的更改git push。当前的 vscode diff 工具在git commit.

0 投票
0 回答
90 浏览

git - 如何让`git diff`调用`git difftool -t opendiff -y`?

简短的问题是:如何制作

调用

? 第二行是调用opendiffdiff 一些文件,即使事先没有进行任何配置(我git在 macOS Catalina 和 Big Sur 上使用的是 1.9.2 版本和当前的 Xcode 12.1)。

线

不起作用。


更长的细节:

我们可以很容易地调用opendiffusing git difftool -t opendiff -y,因此git知道如何在opendiff没有任何额外配置的情况下将其用作可视差异工具。并且在 github 上有一种方法可以diff.external用来调用单独的 shell 脚本来调用opendiff.

因此,既然git很容易知道如何调用opendiffusing difftool,我们真的不需要使用外部 shell 脚本。对于可以调用任何外部命令的事实diff.external,那么调用自身似乎是合乎逻辑的,即调用git difftool -t opendiff -y,但是行

将不起作用,并且在我们git diff之后执行时可能会导致错误。(这可能是由于向git“外部”命令传递了额外的参数?)它给出的错误是:

如何使其工作以便git diff可以调用git difftoolwith opendiff?看起来git diff而且git difftool有点特别,因为我们甚至配置了默认difftool使用 usinggit config --global diff.tool opendiff所以我们触摸diff到 configure difftool。因此,从某种意义上说git diffgit difftool它们看起来像是独立的事物,但从某种意义上说,它们看起来像是一个整体。

使其工作但使用别名的一种方法是

但随后我们将需要使用git diffy来运行它而不是git diff. 我们也可以创建一个 Bash 或 Zsh 别名gitdiff来运行git difftool -t opendiff -y,但似乎我们应该能够在git diff不设置额外的 shell 脚本的情况下使用。

0 投票
0 回答
20 浏览

git - 使用 git difftool --dir-diff 时,我希望修改日期与原始文件/回购相匹配

当我使用git difftool --dir-diff文件时,文件被复制到临时文件夹中,在我的差异工具中,日期是文件被复制的时间。

我希望文件具有工作文件夹/存储库中的日期。

有可能吗?如果可以,怎么办?

使用 Windows 10 和 cmd.exe,但如果可以的话,会考虑替代 cmd.exe。

0 投票
0 回答
84 浏览

git - 带有 -I 选项的 git difftool

从 git 2.30 开始,我们可以选择在 git diff 中指定忽略模式。但是,我无法-I使用git difftool.

例子

假设我添加了一行text.

正如预期的那样,什么都不返回。

然而,

打开差异工具,其中包括text.

我的第一个想法是,也许该-I参数在命令中被完全忽略了difftool,但我可以确认该命令正在尝试解析正则表达式:

返回

git difftool 文档暗示所有git diff选项都是继承的:

有关支持的选项的完整列表,请参阅 git-diff[1]。

和 的选项-G-S行为相同git diffgit difftool所以我的期望与-I.

git diff -I为什么和的结果之间存在差异git difftool -I

0 投票
0 回答
61 浏览

git - 如何使用 meld(或其他 difftool / mergetool)选择性地集成 git 中两个不相关存储库(远程)之间的更改?

背景

我有一个从公共仓库复制的私人仓库(都托管在 github 上)。我需要有选择地将来自公共的更改合并到私人回购中(而不是简单地做一个git pull.

如果可行,我希望为此目的使用融合工具,但我对所有可行的替代方案持开放态度。

(副本是根据 Github 的文档在这里创建的;添加第二个遥控器2nd_remote来比较两个 repos 是根据 iamamac 的回答在这里完成的;meld 的配置是根据 mattst 的优秀指南在这里完成的。)

作为参考,这是我确切的全局 git 工具配置:

问题

此设置适用于查看差异:meld 中git difftool origin/main 2nd_remote/main 输出/显示符合预期,显示每个 repo 中指定分支之间的所有差异。

但是,由于使用的是临时文件,因此基于这些差异在melddifftool中进行和保存更改并不容易(或明显如何) 。 我想做的是使用 meld 的设置,它很容易管理和保存更改。
mergetool

但是,当我进行应该引入合并冲突的测试更改(例如,两个存储库中同一行的不同附加)并更新遥控器时,git mergetool origin/main 2nd_remote/main会给出: No files need merging

我的目标

鉴于上述情况,我认为我需要得出以下解决方案之一:

  1. 弄清楚如何在融合中进行更改以difftool轻松保存到“真实”文件而不是临时文件;或者
  2. 开始mergetool使用这个两个远程设置

但是,如果我完全走错了树,还有另一种更好的方法,我当然想听听。非常感谢任何和所有指导!

0 投票
1 回答
88 浏览

visual-studio - 我可以为 git bash 和 Visual Studio 2019 设置不同的 difftools 吗?

我使用 git bash 和 Visual Studio 2019 的内置 git 存储库并排集成,以对相同存储库进行源代码控制。默认情况下,当我在 Visual Studio 中查看对文件的更改时,差异会显示在 Visual Studio 中。当我从命令行运行“git difftool”时,差异显示在 vim 编辑器中。

我想将 git bash difftool 从 vim 更改为 vscode,所以我更改了我的 .gitconfig 文件,如下所示:

现在通过命令行运行 git difftools 在 VSCode 窗口中打开差异。但这也会导致Visual Studio在新的 VSCode 窗口中打开差异,而不是使用它内置的差异查看器。

有没有办法只为 git bash 设置默认 difftool 而不会更改 Visual Studio 2019 的值?

0 投票
4 回答
279 浏览

git - git diff,带有外部 diff 程序,只需一次

在执行. 时git diff,有时我想使用不同的 diff 工具(例如,cmp或我自己的 bin 目录中的自制 word-diff 程序)。

许多类似 diff 的程序都有一个选项

告诉他们改用其他差异或类似差异的程序。

我知道 git-difftool 和这个问题,但这并不是我想要的。我宁愿不必提前配置一些东西,我今天要使用的非标准命令可能不是我明天要使用的非标准命令。理想情况下,我希望能够从命令行一次性完成。

(是否可以将 difftool 配置为能够使用多个不在官方列表中的非标准工具?)

如果git diff使用我选择的 diff 工具太麻烦,我也可以使用类似的东西

我知道没有像“git cat”这样的命令。但是这里的想法是手动将文件的 repo 版本与本地文件进行比较,给定一个 git 命令来简单地发出文件的 repo(或在其他情况下,索引)版本。有没有这样的命令?

最后,如果没有git diff -D diffprog我要询问的假设选项,并且如果没有我假设的“git cat”命令之类的东西,那么我希望它们是错误的吗?

0 投票
1 回答
27 浏览

git - 在 Debian Linux v. 10 (buster) 中使用 git difftool 进行文件比较

在 Debian Linux v. 9 中,我使用以下命令进行文件比较,该命令运行正常:

git difftool /file/a /file/b

在 Debian Linux v. 10 中,我以相同的方式使用此命令并出现以下错误:

fatal: not a git repository (or any of the parent directories): .git

请帮帮我,解决它。

PS:我在工作中没有使用任何 git-repositories,只是来自 git 的 difftool。