Git commit, который не отменяет исходных авторов в Git вине

Я использовал perl script для изменения всех символов табуляции в репозитории php git и изменил их все на 4 пробела.

$ find -iname \*.php -exec perl -pi -e "s/\t/    /g" {} \

Я могу выполнить это изменение с помощью git commit, но после этого совершения будет отмечен как автор всех измененных строк внутри git blame.

Есть ли способ сделать это массовое изменение, которое не означает меня как автора измененных строк, но сохраняет оригинальный автор? Это большая история, которую мы действительно не хотим потерять в нашем проекте.

Наша цель в замене вкладок четырьмя пробелами заключается не в том, чтобы в w20 > вины не было ничего похожего, но чтобы следовать надлежащим стандартам кодирования PEAR. Например. нет вкладок, используйте 4 пробела для отступов.

Ответ 1

Благодаря wnoise на git: измените стиль (пробелы) без изменения владельца/вины?, я придумал это для запуска произвольного фильтра на git история, поэтому, используя это, вы можете переписать историю, чтобы она выглядела как оскорбительные пробелы или другие проблемы никогда не выполнялись, оставив исходных авторов в такте, но ваш код очистился: git filter-branch --tree-filter 'git diff-tree --name-only --diff-filter=AM -r --no-commit-id $GIT_COMMIT | php cleanup.php' HEAD

Ответ 2

Команда commit не несет ответственности за решение, как обрабатывать пробелы, но ответственность за команду вины, потому что это вина, которая анализирует различия между версиями, чтобы получить автора каждой строки. Таким образом, поиск опции для игнорирования пробелов в вине:

Опция -w определяется как: Msgstr "Игнорировать пробелы при сравнении родительской версии и ребенка, чтобы найти, откуда взялись строки." http://kernel.org/pub/software/scm/git/docs/git-blame.html