问题标签 [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 合并冲突转换为类似 diff 的格式?
我正在合并两个git rebase
涉及 file 的 git 变更集(或者可能 - 在 'ing 的过程中,它合并了变更集)foo
,并且有一些合并冲突。该文件如下所示:
我的问题:
对于特定文件(foo
如上)如何显示冲突内容,以便 HEAD 修订显示为已删除的文本,而其他变更集(在我的示例中)显示为添加的文本?换句话说,我怎样才能使某些工具将 and 之间的部分<<<<<
视为=====
前缀,以及将and-
之间的部分视为前缀,或者相反?>>>>>
=====
+
笔记:
- 最好的办法就是向标准输出流进行类似差异的输出,因为我可以将其通过管道传输到另一个工具中。但是与 git 的 diff 相关工具有更多关联的东西也是相关的。如果我可以合理地避免它,我宁愿不必下载一些自定义实用程序/应用程序。
- HEAD 和其他提交版本的并排显示也很有用
windows - WebStorm git difftool -d 立即关闭,无需等待用户
在 Windows 上运行git difftool -d <commit> <commit>
会打开 WebStorm 差异工具,但内容会在它启动后立即消失。
尝试了 trustExitCode、提示和bat 文件。
git - Git - 应用在 difftool 中所做的更改
我确信这是非常基本的,但我已经阅读了文档,但仍然无法弄清楚。
我有两个分支,我需要手动合并几个文件中的一些更改(不要问)。我正在并排查看文件,突出显示差异,其中:
git difftool branch1 branch2 -- path_to_file
这使我可以将所需的所有内容复制到将要保留的文件中(位于 branch1 fwiw 中),但该文件是 /tmp/ 中的一些长文件名。我不知道如何将我的编辑实际保存到我正在编辑的文件中(我使用 vim 作为 difftool,并且我已经设置noreadonly
,问题是它是一个不同的文件(在 /tmp/ 中,因为我说过)。
只有几个更改,我可以手动编辑 branch1 中的文件,但我确信 git diff 必须允许我这样做,我想学会正确地做到这一点。
git - Git:如何在提交前将文件标记为已审核?
我是一名 Perforce 资深人士,他正在将我们的组织转移到 git。我坚持的一件事是如何管理大型提交(我不是同时指代许多不同的更改——我知道这不是最佳的——而是一次影响许多文件的单一类型的更改)。例如,假设我向一个在几十个文件中调用的函数添加了一个参数。使用带有可视差异工具的 git 命令行,在提交之前查看所有更改的最佳方法是什么?实际上,我可能会在一段时间内展开此审查,或者在审查我的一些文件后进行一些更改,然后再返回未审查的文件。
简而言之,我正在寻找一种方法,可以一次轻松地 difftool 文件,然后将它们标记为已审核。我知道那里有很多 UI 解决方案,但我对原生 git 解决方案很感兴趣。
被拒绝的想法:
- 保持所有文件未暂存,然后一次对它们进行一个比较,如果我喜欢该差异,则暂存一个文件。这个想法的问题在于,输入每个文件的完整路径来进行比较(然后暂存它)很麻烦,因为文件可能会散布在许多路径中。
- 使用交互式添加模式 (
git add -i
)。这个想法的问题是你不能区分未暂存的文件。这意味着要使其工作,我将不得不做一些奇怪的旋转,在其中我会暂存所有内容,然后在文件通过我的审查后,我实际上会取消暂存它,最后我会在提交之前交换暂存和未暂存的文件。总的。 - 使用补丁模式。这很酷,但似乎不适用于视觉差异工具。
- 使用
git gui
. 这个实际上非常接近,但我还没有找到一种方法可以通过双击或热键轻松地在每个文件上运行 difftool。
具有讽刺意味的是,git add -i
如果它不颠倒差异的含义,它将完全满足我的需求。即,默认情况下,diff 适用于未分级的更改,但在交互式添加期间,diff 仅适用于分级更改。这让我感到困惑,特别是因为它的重点git add
是暂存文件。
感谢所有想法!谢谢您的帮助。
git - difftool 不会显示 Git diff -cc 模式
我不确定发生了什么,但我只是将我的 diff 工具设置为由 git difftool 调用,但 difftool 遇到的第一个文件以标准 diff 方式显示 - 在控制台上逐行替换
这似乎是 diff 的一个特例,因为它有--cc
标志和三重@
符号 ( @@@
) 而不是双一 ( @@
),最重要的是对正在区分的修订的奇怪描述:hash1,hash2..0000000
。
这到底是什么?我选择 Beyond Compare 作为我的差异工具,它可以处理这些情况吗?如果没有,可能另一个可以这样做吗?
git - 如果 diff.tool 未设置,Git (2.22.0) difftool 不再传递到 git diff
根据 @VonC 在 Git 2.22.0(2019-06-08 发布)中https://stackoverflow.com/a/56212234中的回答,git difftool
对有关如何确定其配置的命令进行了许多更改。
但是,除非我在这里遗漏了什么,否则似乎在此版本中引入了功能回归。在以前的版本中,包括 2.21.0,可以在git difftool
没有任何配置或 CLI 选项的情况下使用,在这种情况下,它会通过git diff
.
现在在 Git 2.22.0 中,如果我在git difftool
不配置diff.tool
or的情况下使用merge.tool
,我会收到以下消息:
有什么方法可以绕过此错误并返回到通过git diff
或必须git diff
直接调用的旧行为?
编辑:根据 Jeff King 的邮件列表回复,新行为是故意的。然而,在git-difftool 文档的顶部,它说:
git difftool是git diff的前端,接受相同的选项和参数。见git-diff[1]。
现在不是这样了吗?
git - 配置 git difftool
我正在使用 git 2.18.0。在~/.gitconfig
部分[alias]
中,我配置了 diff-tool 别名,如下所示:
唉,git meld
产生diff
- 风格的结果,而不是启动meld
. 此外,在命令行上拼写出来git difftool -y --tool=meld
也会产生差异风格的输出。另一方面,meld
从命令行启动是成功的。
你能建议什么可能是错的吗?
git - 合并错误“无法导入:GTK+;DLL 加载失败”作为外部 git difftool 启动 meld.exe 时
我正在尝试在 Windows 上使用 Meld 作为 Git Difftool 并面临以下问题:
发生以下 Python 错误:
当我尝试在 git bash 中运行 meld.exe 时,也会出现同样的问题。
为了使用 meld 作为 difftool,我更改了用户 gitconfig 文件中的设置:
这似乎是正确的,因为 git 在工作区中使用命令 'git difftool' 后试图启动 meld.exe。
meld - 融合不会自动在最前面打开
我正在使用 MacBook Pro。我已经设置了 git difftool 来使用 meld。这是我的 ~/.gitconfig:
当我执行 git difftool 时,meld 在后台启动。我必须单击融合图标才能查看差异。(Command + Tab 不起作用)当我关闭一个文件时,另一个文件再次在后台打开。所以我必须再次点击融合图标才能看到差异。
虽然这在技术上有效,但非常不方便。我想知道是否有办法解决这个问题,以便融合将在最前沿启动差异。