git diff没有将单引号更改为双引号

时间:2018-01-30 15:20:27

标签: git

我的一位同事应用了js-linting的结果,所以现在有很大一部分差异,其中所有实际上在一行中改变的只是单引号'到双引号{{1 }}

"

有没有办法从- var mod = require('mod'); + var mod = require("mod"); 过滤掉它?如果某一行发生了其他变化,则仍应显示:

git diff

2 个答案:

答案 0 :(得分:2)

这是一种解决方法。

假设您在提交A中有原始版本,并且要在提交B中检查要查看的版本,您要查明唯一的更改是否应用了linter,或者是否有& #39;更多。

根据A创建分支并自行运行linter,从而生成提交A'

o -- o -- A -- B   # version to be reviewed
           \
            A'     # version with only linting applied

现在生成A'B之间的差异。您应该只看到运行linter的结果的任何更改。

答案 1 :(得分:1)

这不是一个很好的方法,尤其是当您认为"' 之间的更改可能是错误时。

"hello" => 'hello'

可能没事,但是

"what's up" => 'what's up'

会受到关注(关注的程度可能因语言而异)。

您可以使用--word-diff-regex'"视为"不是字词的一部分&#34 ;;在这种情况下,所有 '"字符在计算差异时都会被忽略。但是,这会执行一个单词" diff而不是典型的面向行的diff。例如

$ git diff file1

diff --git a/file1 b/file1
index 64315fd..cd80abf 100644
--- a/file1
+++ b/file1
@@ -1,4 +1,4 @@
-"this is a test"
-"this is a changing test"
-"this couldn't cause a problem, could it?"
-"it's possible some edits could be trouble"
+'this is a test'
+'this is a changing line of test'
+'this couldn't cause a problem, could it?'
+'it"s possible some edits could be trouble'"'"''

嗯,这没多大用处;它只是说一切都改变了。好的,怎么样

$ git diff --word-diff-regex="[^'\"]" file1
diff --git a/file1 b/file1
index 64315fd..cd80abf 100644
--- a/file1
+++ b/file1
@@ -1,4 +1,4 @@
'this is a test'
'this is a changing {+line of +}test'
'this couldn't cause a problem, could it?'
'it"s possible some edits could be trouble'"'"''

嗯,它检测到并强调了第二行的变化,这样做很好。 (这不会在复制的文本中出现,但默认情况下在控制台上,添加会突出显示为绿色,因此它确实可以很好地调用更改。)它没有注意到我的注意事项。我以一种潜在的破坏性方式改变了第3行,并且它没有注意到第4行的一系列虚假引用变化(和添加)。

所以它并不完美。

通过预处理文件可以获得稍微好一点的结果,强制两个版本都使用标准化的引号表示法;这将会遇到上面的第4行,但仍然不是第3行。而且你不再直接区分源代码控制的版本,所以你所做的并不是可审计的。