2010-07-30 75 views
17

我不小心在my initial commit中输入了一些空格 - 它在git diff --color中显示为红色。什么是摆脱现有空白的最佳方式,以及如何避免再次发生这种情况?git - trim whitespace

我不一定要找一个内置的git命令。在Ubuntu上免费提供的任何外部程序也将受到欢迎。

+0

真棒我不知道git有这个功能。 – xenoterracide 2010-07-30 17:39:09

+1

请参阅[此问题](http://stackoverflow.com/q/591923/470844)。 – ntc2 2013-03-13 23:46:50

回答

24

要修剪在当前目录下的所有文件尾随空白,使用:

sed -i 's/[[:space:]]*$//' * 

为了警告未来空格错误(这两个尾随空格选项卡之前和空格),并修复空白错误在补丁程序,将下面的代码添加到您的gitconfig文件:

[core] 
    whitespace = trailing-space,space-before-tab 
[apply] 
    whitespace = fix 
+0

这对防止空白提交很有帮助,但是OP询问删除了已经提交的空白 – stevejpurves 2014-10-10 12:45:57

+0

@stevejpurves:最上面一行说明了如何使用* sed *删除尾部空白。据我所知,没有git命令可以做同样的事情。 – Zaz 2015-01-07 16:38:17

12

core.whitespace指示GIT中标志某些空白问题:

  • trailing-space在一行结束时或在一个文件
  • space-before-tab警告的端部发出警告空格时,有使用的标签之前的空间用于缩进

apply.whitespace在应用修补程序时使用。它检查空白错误(上面列出的错误,在core.whitespace中),并在尝试修复它们(即删除它们)后应用修补程序。

这些选项去~/.gitconfig - 也就是说,一个.gitconfig文件在用户的主目录(通常在Linux上/home/user/.gitconfig/Users/user/.gitconfig在Mac OS X的根,我不知道在Windows,但我想某处在C:\Documents and Settings\user)。

+0

这解释了空白设置(+1),但没有回答“我如何摆脱现有的空白?”这个问题。为了清晰起见,我更新了原始帖子。 – Zaz 2010-07-30 18:43:18

0

并且从所有子目录中递归地修剪所有文件的空格可以使用。

find ./* -type f -exec sed -i's/[[:space:]] * $ //'{} \;