мерзавец - обрезать пробелы - PullRequest
18 голосов
/ 30 июля 2010

Я случайно поместил несколько пробелов в моего начального коммита - он отображается красным в git diff --color. Какой лучший способ избавиться от существующего пробела и как я могу избежать этого снова?

Я не обязательно ищу встроенную команду git . Любые внешние программы, доступные бесплатно в Ubuntu, также приветствуются.

Ответы [ 4 ]

26 голосов
/ 30 июля 2010

Чтобы обрезать конечные пробелы во всех файлах в текущем каталоге, используйте:

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

Чтобы предупредить о будущих ошибках пробелов (оба конечные пробелы и пробелы перед вкладками ) и для исправления ошибок в пробелах добавьте следующий код в ваш файл gitconfig:

[core]
    whitespace = trailing-space,space-before-tab
[apply]
    whitespace = fix
13 голосов
/ 30 июля 2010

core.whitespace указывает git помечать определенные проблемы с пробелами:

  • trailing-space предупреждает о пробелах в конце строки или в конце файла
  • space-before-tab предупреждает о наличии пробела перед вкладкой, используемой для отступа

apply.whitespace используется при применении патча. Он проверяет наличие пробельных ошибок (перечисленных выше в core.whitespace) и применяет исправление после попытки их исправить (т.е. удалить их).

Эти параметры входят в ~/.gitconfig - то есть файл .gitconfig в корне домашнего каталога вашего пользователя (обычно /home/user/.gitconfig в Linux, /Users/user/.gitconfig в Mac OS X, и я не знаю где на винде но я полагаю где-то в C:\Documents and Settings\user).

2 голосов
/ 10 октября 2014

См. Эту тему git удаляет завершающие пробелы в новых файлах перед фиксацией при использовании git rebase для удаления пробелов из файлов, которые вы уже зафиксировали.

0 голосов
/ 22 февраля 2018

И для рекурсивного удаления пробелов из всех файлов из всех подкаталогов.

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

...