问题标签 [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.
git - 在编写 git difftool 时,该工具有没有办法知道正在比较哪个文件?
我尝试为这个问题编写一个简单的 difftool -验证 Git 提交是否只移动行- 它可以工作......我猜很好,但有一个问题。
当要求它在两次提交之间进行差异时,如下所示:
然后对于每个修改过的文件,使用来自每个提交的快照创建两个临时文件,然后调用该工具。
然而,这意味着该工具无法报告哪个文件实际上正在被比较,因为文件名可能是这样的:
所以我的问题是,有什么方法可以让我在 .gitconfig 文件中添加更多配置,或者是否有诸如环境变量之类的东西,可以用来告诉工具实际比较的是哪个文件?
这个特定工具的 .gitconfig 文件如下所示:
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)
知道可能出了什么问题以及如何进一步调试吗?
visual-studio-code - 如何在 git push 之前在 UI 中的 PR 中显示更改的代码
我正在同时使用 VScode 和 git,我想知道是否有一种方法或插件可以在我之前在此 PR 中显示 UI 中的更改git push
。当前的 vscode diff 工具在git commit
.
git - 如何让`git diff`调用`git difftool -t opendiff -y`?
简短的问题是:如何制作
调用
? 第二行是调用opendiff
diff 一些文件,即使事先没有进行任何配置(我git
在 macOS Catalina 和 Big Sur 上使用的是 1.9.2 版本和当前的 Xcode 12.1)。
线
不起作用。
更长的细节:
我们可以很容易地调用opendiff
using git difftool -t opendiff -y
,因此git
知道如何在opendiff
没有任何额外配置的情况下将其用作可视差异工具。并且在 github 上有一种方法可以diff.external
用来调用单独的 shell 脚本来调用opendiff
.
因此,既然git
很容易知道如何调用opendiff
using difftool
,我们真的不需要使用外部 shell 脚本。对于可以调用任何外部命令的事实diff.external
,那么调用自身似乎是合乎逻辑的,即调用git difftool -t opendiff -y
,但是行
将不起作用,并且在我们git diff
之后执行时可能会导致错误。(这可能是由于向git
“外部”命令传递了额外的参数?)它给出的错误是:
如何使其工作以便git diff
可以调用git difftool
with opendiff
?看起来git diff
而且git difftool
有点特别,因为我们甚至配置了默认difftool
使用 usinggit config --global diff.tool opendiff
所以我们触摸diff
到 configure difftool
。因此,从某种意义上说git diff
,git difftool
它们看起来像是独立的事物,但从某种意义上说,它们看起来像是一个整体。
使其工作但使用别名的一种方法是
但随后我们将需要使用git diffy
来运行它而不是git diff
. 我们也可以创建一个 Bash 或 Zsh 别名gitdiff
来运行git difftool -t opendiff -y
,但似乎我们应该能够在git diff
不设置额外的 shell 脚本的情况下使用。
git - 使用 git difftool --dir-diff 时,我希望修改日期与原始文件/回购相匹配
当我使用git difftool --dir-diff
文件时,文件被复制到临时文件夹中,在我的差异工具中,日期是文件被复制的时间。
我希望文件具有工作文件夹/存储库中的日期。
有可能吗?如果可以,怎么办?
使用 Windows 10 和 cmd.exe,但如果可以的话,会考虑替代 cmd.exe。
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 diff
,git difftool
所以我的期望与-I
.
git diff -I
为什么和的结果之间存在差异git difftool -I
?
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
我的目标
鉴于上述情况,我认为我需要得出以下解决方案之一:
- 弄清楚如何在融合中进行更改以
difftool
轻松保存到“真实”文件而不是临时文件;或者 - 开始
mergetool
使用这个两个远程设置
但是,如果我完全走错了树,还有另一种更好的方法,我当然想听听。非常感谢任何和所有指导!
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 的值?
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”命令之类的东西,那么我希望它们是错误的吗?
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。