Подтвердить что ты не робот

Как удалить конечные пробелы только на измененных строках в pre-commit git hook?

Я видел ряд предложенных решений, но почти все они вырезали пробел из всего файла, если он был изменен, что не является вариантом. Я также пробовал:

git diff -w --no-color | git apply --cached

но он тоже не работает. Я использую git версию 1.6.3.1 и не могу его обновить.

4b9b3361

Ответ 1

Найден ответ:

git diff --cached --no-color > stage.diff && git apply --index -R stage.diff && git apply --index --whitespace=fix stage.diff && rm -f stage.diff

Ответ 2

У меня нет такого script, но я думаю, что хорошей отправной точкой является пример pre-commit hook, который поставляется с git (до того, как он был преобразован в diff --check). По крайней мере, он предупреждает только о добавленных строках.

gitweb view pre-commit script

Ответ 3

Этот вопрос немного стар, но у меня есть git ws aliased to git rebase --whitespace=fix

Вы можете настроить аналогичный псевдоним, запустив

git config --global alias.ws 'rebase --whitespace=fix'

Это сделает любые любые коммиты, которые вы еще не нажали, и повторно примените их после исправления пробелов только в строках, которые вы изменили.