2010-07-30 81 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:]] * $ //'{} \;