问题标签 [word-diff]

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 投票
1 回答
137 浏览

git - 获取有关 git word-diff 合并行的信息

我正在尝试构建文件的逐行历史记录,并且在使用模式时在git diff/ ... 命令中出现了奇怪的行为。它有时会合并一些行。git log--word-diff

例如,如果旧版本的文件是:

它被转换为:

(这些行来自这个项目,使用 GPL 许可证分发)

Simplegit diff给了我正常的输出(删除了 2 行,添加了 1 行),但git diff --word-diff给了我这个:

将在--word-diff=porcelain模式下发出相同的输出,这不是文本模式错误。

当我试图获取文件的逐行历史记录时,我的方法在这段git log. 我看到这git实际上向我展示了人类可读的最佳差异,因为编辑后的两行变成了一行,但对于脚本来说并不明显。所以,

  • 这种行为是有意的吗?(git 1.9.1)
  • 如果是,有没有办法获得关于这些合并的一些额外输出(如果有,取消合并)?不是,如何通过其他方式找到它们?
0 投票
3 回答
1128 浏览

git - What are `git diff --word-diff' default regexps?

git diff has option --word-diff-regex=<...> that matches words. There are special default values for some languages (as said in man 5 gitattributes). But what are these? No description in docs, I looked up sources of git, haven't found them too.

Any ideas?

EDIT: I'm on git 1.9.1, but I'll accept answers for any version.

0 投票
1 回答
1744 浏览

git - 可以在 github 中启用 word-diff 选项以查看对一行的更细粒度的更改吗?

我正在探索使用 github 进行文本版本控制。github 的一个主要问题是更改是按行进行的。因此,如果您对单词或短语进行了相当细化的更改,则整行似乎都已更改。

在 git 本身中,有一个解决方案,因为您可以激活命令--word-diff上的选项。git diff您最终会得到如下所示的漂亮差异:

github中是否对此有任何支持?可以添加到 url 的某种查询参数,类似于带有?的空白排除选项?w=1

0 投票
2 回答
1342 浏览

git - 如何使用 git --word-diff 显示空格差异?

为了说明问题:参见diff

本段中唯一的差异(从A macro that needs空格差异开始(在某些地方插入/删除换行符);

  • 运行时git diff,前面的段落以红色显示,后面的段落以红色显示,很难发现差异
  • 运行时git diff --word-diff,后面的段落以灰色显示,不显示空白变化
  • 运行时git diff --word-diff-regex=.它会显示空白更改(太棒了!)但是[编辑]它会逐个字符地进行差异,这通常是不可读的,因为它混合了来自不同单词的字母以最小化差异,例如: git show --word-diff-regex=. 4a720394bba39ce1e67d518b909cbb1c25f63d09 [- * patch compile-]r [-so `isM-]a[-inModule`-] [-is true when -d:isMainModuleIsAlwaysTr-]{+m+}u[-e-] [- T-]{+c+}h[-at'll give speedup-] be[-nefi-]t[-, and we don'-]t[- hav-]e{+r+} [-to p-]{+w+}a[-tch stdlib files-]{+y+}. ]#

我想要的是在运行时显示空白差异的选项--word-diff(或--word-diff-regex),例如通过{+ +}and [- -]; 注意: for--word-diff=color最好将这些显示给,例如,也可以通过{+ +}and显示,[- -]否则这些会消失。

注意:我在我的 gitconfig 中使用颜色。

注意:无济于事,因为空格差异未显示在输出中git diff --word-diff=porcelain

0 投票
1 回答
585 浏览

git-diff - 如何 git-apply 一个 git word diff

我需要编辑一个杂乱无章的提交,它只在随后的几行中更改了一个单词,保留其中一些更改并删除其他更改。这些更改很容易在 中看到git diff --word-diff,并且以这种格式我可以轻松地编辑帅哥来做我想做的事情,但现在我有一个像这样的文件

我想将其用作git apply.

然而,vanillagit apply words.diff失败了fatal: corrupt patch at line 6——一个正常的差异文件会以那个不受影响的行中的一个空格开头——而且我没有看到任何可以git apply在其联机帮助页中接受 word-diff 文件的内容。

我如何说服git apply将这种格式的文件作为补丁?或者我怎样才能轻松地将这个文件转换成一个有效的补丁?

0 投票
1 回答
327 浏览

regex - git word diff regex 奇怪的行为

我正在使用 Git 对散文进行版本化,并且一直在尝试git diff --word-diff查看行内的更改。我想使用脚本中生成的结果。

--word-diff但识别单词的默认方式似乎存在缺陷。所以我一直在尝试各种--word-diff-regex=选项。

问题

以下是我试图处理的两个主要缺陷:

  1. 添加的空格似乎被忽略了。但是,如果尝试以编程方式使用结果,则空格可能非常重要。

    例如,从 Markdown (.md) 文件中获取此标头:

    现在,让我们在它的末尾添加一些文本:

    如果我运行git diff --word-diff这个:

    但是“in”一词之前的空格并未包含在差异中。

  2. 空行被完全忽略。

    这是git diff一个文件内容的标准,我删除了一行并添加了几行新行——一个是空的,另一个是文本“这是一个新行”。

    但这git diff --word-diff是相同的内容:

    删除和添加的空行将被完全忽略。

期望的结果

把上面的两个例子放在一起。这是我想看到的:

我尝试过的事情:

  • git diff --word-diff-regex='.'当新词与现有词共享字符时,似乎过于细化
  • git diff --word-diff-regex='[^ ]+|[ ]'似乎解决了第一个问题,但老实说,我不确定为什么。
  • git diff --word-diff-regex='[^ ]+|[ ]|^$'-- 我希望^$最后的 能帮助捕获空行 -- 但它没有,更糟糕的是,它似乎忽略了随后的变化。
  • git diff --word-diff-regex='[^ ]+|[ ]|.{0}'产生与以前相同的问题。

如果有人能阐明如何做到这一点,或者至少与--word-diff-regex.

0 投票
1 回答
369 浏览

ruby-on-rails - 在 Heroku 上运行 git shell 命令

我使用 git 来比较字符串(我在下面写了原因)。它适用于我的机器上的开发,但不适用于Heroku.

我收到以下错误:

有谁知道我怎样才能让这个命令起作用Heroku?(顺便说一句,usage:提示不能解决问题)。

更新

Heroku 支持将我引导到这个buildpack,以便我可以在他们的服务器上手动安装 git。解决方案在我下面的答案中。

0 投票
1 回答
101 浏览

git - 在 git 中,如何避免将较小的更正合并到在原始内容的每一行之间插入一行新内容的分支中的冲突?

有人问为什么看似可能的使用 git 的合并与我的代码相似,但是(1)我的有点不同,(2)我寻求解决问题的方法而不仅仅是解释。

编辑:这是我经常需要为许多文件做的事情。我还需要培训非技术人员能够做到这一点。手动合并每个冲突对于我的用例来说将是一个交易破坏者。

master分支上的文件开头为:

我创建了一个名为analysis_1并提交这些更改的分支:

意识到我之前的错误,我检查master并提交了一个修复:

有没有一种方法(策略、算法或 GIT_EXTERNAL_DIFF 工具)可以在没有冲突的情况下合并masteranalysis_1这样我就可以保持如下的更正和分析?

谢谢!

编辑 2:这个问题指出了 wdiff 并引导我尝试提供我想要的差异结果的diff选项。--word-diff下一步是让它用于合并。

编辑 3:似乎基于单词的合并对 SO 有一些可能会产生结果的问题。如果我在其中一个适用的解决方案中找到解决方案,我会更新这个问题。

0 投票
2 回答
57 浏览

python - 在单词列表中找到与给定单词距离最小的单词

假设给定一个单词列表['windows','hello','python','world','software','desk']和一个输入单词'widow',如何(快速)从单词列表中找到与输入单词具有最小编辑距离的单词'widow'(本例中的答案是'windows')?是否有可用的库/函数来实现它?谢谢!

0 投票
2 回答
62 浏览

php - 在 PHP 中按顺序突出显示不同的单词

我想在 PHP 中突出显示 2 个字符串单词之间的顺序不同,假设我有 2 个字符串,如下所示。

突出显示的单词应该是Arab To -092541and KDS。到目前为止,我已经尝试了下面的代码。

如果我只添加单词,则此代码可以正常工作,例如Arab To并且KDS不更改现有单词-092541。当我更改-09254-092541它时,它会启动一个无限循环并显示Undefined array key错误。

预期的突出显示的单词是Arab TO -092541 KDS

我尝试了以下答案/库,但这些都不适用于我的情况。

@Arif 对类似问题的回答
Side-by-side
class.Diff.php

任何帮助/指导将不胜感激。