我的一位同事应用了js-linting的结果,所以现在有很大一部分差异,其中所有实际上在一行中改变的只是单引号'
到双引号{{1 }}
"
有没有办法从- var mod = require('mod');
+ var mod = require("mod");
过滤掉它?如果某一行发生了其他变化,则仍应显示:
git diff
答案 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行。而且你不再直接区分源代码控制的版本,所以你所做的并不是可审计的。