ico*_*ast 65 git diff git-diff
我正在通过一个代码库并修复空白怪异并且通常会修正缩进等等,我想确保我没有无意中进行任何其他更改,所以我在git diff -w显示所有已更改文件的差异而忽略空格差异.问题是,这实际上并没有忽略所有的空白差异 - 至少我认为只是空白差异.例如,在以下输出中git diff -w,
-"Links":
-{
-
- "Thermal":
-
-{
-
+ "Links": {
+ "Thermal": {
Run Code Online (Sandbox Code Playgroud)
你可以看到我只有
这个问题看起来似乎可能首先提供答案,但它处理两个特定文件之间的差异,而不是两个特定提交之间的差异.通过搜索发现的其他一切也是一个死路一条.例如,这个问题是关于合并,而不是显示差异,这个问题涉及显示单词级差异,等等.
ico*_*ast 53
也许有更好的答案,但到目前为止我找到的最好的解决方案就是这个.
首先,您必须控制Git当前使用的"空白"的定义..gitconfig在项目中创建或编辑,以包含
[core]
whitespace = -trailing-space,-indent-with-non-tab,-tab-in-indent
Run Code Online (Sandbox Code Playgroud)
接下来,您必须控制所用单词的定义.而不仅仅是使用git diff -w,添加--word-diff-regex=[^[:space:]]:
git diff -w --word-diff-regex=[^[:space:]]
Run Code Online (Sandbox Code Playgroud)
你仍然会看到上下文(在我的情况下,因为我试图确保除了空格差异之外没有差异)没有帮助.您可以使用-U0告诉Git为您提供0行上下文,如下所示,
git diff -w -U0 --word-diff-regex=[^[:space:]]
Run Code Online (Sandbox Code Playgroud)
但是你仍然会得到看起来非常像上下文的输出,但它仍然比仔细和手动查看所有更改要好得多,以确保它们只是空白更改.
jww*_*jww 29
在提交之间使用git-diff 忽略所有空格更改
这个问题看起来似乎可能首先提供答案,但它处理两个特定文件之间的差异,而不是两个特定提交之间的差异.通过搜索发现的其他一切也是一个死路一条......
我认为你遇到了麻烦,因为Git是这项工作的错误工具.它不会使任务变得容易,并且屈服于适应工具是错误的方法.工具应该适合你,反之亦然.
执行第二个克隆,然后签出有问题的起始修订.然后使用当前版本对它们运行常规diff : diff -bur --ignore-all-space <dir1> <dir2>.
以下是一些选项diff
-i, --ignore-case
ignore case differences in file contents
-E, --ignore-tab-expansion
ignore changes due to tab expansion
-Z, --ignore-trailing-space
ignore white space at line end
-b, --ignore-space-change
ignore changes in the amount of white space
-w, --ignore-all-space
ignore all white space
-B, --ignore-blank-lines
ignore changes where lines are all blank
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37388 次 |
| 最近记录: |