我有一个源代码文件,不知何故它出现了混合缩进(使用了空格和制表符进行缩进)。
我做了很多修改,现在我想在git中提交这些更改。不幸的是,我无意中命令我的编辑器修复了所有缩进。所以现在看起来像我修改了很多行,但实际上唯一的变化是空格。
我的提交必须由我在 Gerrit 的同事审核,因此大量仅包含空格更改的行显示为更改会添加许多噪音。
如何取消暂存文件中所有仅包含空格(或缩进)更改的行,以便我的git提交仅包含实际更改的行?
(或者,如何仅暂存文件的更改超过空格的行?)
我有一个源代码文件,不知何故它出现了混合缩进(使用了空格和制表符进行缩进)。
我做了很多修改,现在我想在git中提交这些更改。不幸的是,我无意中命令我的编辑器修复了所有缩进。所以现在看起来像我修改了很多行,但实际上唯一的变化是空格。
我的提交必须由我在 Gerrit 的同事审核,因此大量仅包含空格更改的行显示为更改会添加许多噪音。
如何取消暂存文件中所有仅包含空格(或缩进)更改的行,以便我的git提交仅包含实际更改的行?
(或者,如何仅暂存文件的更改超过空格的行?)
git diff -w --no-color [file names] | git apply --cached --ignore-whitespace
基本上,它应用了将被添加但不包括空格更改的补丁。您会注意到,之后仍然会有未暂存的更改,这是剩下的空格,请运行以下命令以检出它们:git checkout .
git stash save
),重新应用它们(git stash apply
),撤销了那四个失败的文件,按照这个答案的步骤进行操作,从存储中检出那四个文件git checkout stash@{0} -- file1 file2 file3 file4
,然后手动修复这四个文件的空格问题。仍然比手动修复所有38个文件要好得多。 - M. Justin
diff -w
)。如果没有,也许你应该向他们建议这个功能。 - John Zwinck