noo*_*kni 24 git git-commit git-blame
我使用perl脚本修改php git存储库中的所有制表符并将它们全部更改为4个空格.
$ find -iname \*.php -exec perl -pi -e "s/\t/ /g" {} \
Run Code Online (Sandbox Code Playgroud)
我可以提交这个更改git commit,但它会在我提交之后将我标记为内部所有更改行的作者git blame.
有没有办法实现这个大规模的改变,不会让我成为改变行的作者,但保留原作者?这是我们在项目中并不想丢失的很多历史.
我们用4个空格替换制表符的目的不是为了使git责备中的东西看起来不同,而是遵循适当的PEAR编码标准.例如没有标签,使用4个空格进行缩进.
Cod*_*aos 38
commit命令不负责决定如何处理空格,而是blame命令的责任,因为责备分析版本之间的差异以获取每一行的作者.因此,寻找一个选项,忽略空白的责备:
选项-w定义为:"在比较父版本和子版本时忽略空格以找到行的来源." http://kernel.org/pub/software/scm/git/docs/git-blame.html
Jay*_*ine 19
感谢git上的wnoise :改变样式(空白)而不改变所有权/责备?我想出了这个在git历史记录上运行一个任意的过滤器,所以使用它你可以重写历史记录,使它看起来像冒犯空白或其他问题从未提交过,让原始作者保持清醒,但你的代码被清理了:git filter-branch --tree-filter 'git diff-tree --name-only --diff-filter=AM -r --no-commit-id $GIT_COMMIT | php cleanup.php' HEAD