我正在尝试使用代码格式化工具来格式化整个repo。这样做时,我希望保留关于谁提交了哪一行的信息,以便像git blame
这样的命令仍然显示正确的信息。我的意思是,它应该显示作者之前编辑过的每一行(在格式化之前)。
有一个git filter-branch命令,它允许您从一开始就对repo的每个修订版运行一个命令。
git filter-branch --tree-filter '\
npx prettier --write "src/main/web/app/**/**.{js, jsx}" || \
echo "Error: no JS files found or invalid syntax"' \
-- --all
运行它将永远花费时间,并且我真的不关心过去。我只想在不改变每一行的所有权的情况下格式化主分支。我该怎么做呢?我尝试在最后使用rev-list
和其他过滤器类型,但仍然不起作用。必须有一种方法来格式化代码库,同时保留每行的作者信息。
发布于 2021-09-09 12:45:16
您可以让git blame
忽略某些提交,这些提交只执行批量重新格式化等操作:
创建文件.git-blame-ignore-revs
,如下所示:
# Format commit 1 SHA:
1234af5.....
# Format commit 2 SHA:
2e4ac56.....
那就这么做
git config blame.ignoreRevsFile .git-blame-ignore-revs
,这样您就不必每次使用git blame
时都使用--ignore-revs-file
选项。
对https://github.com/github/feedback/discussions/5033进行投票,将该功能添加到github的网络指责查看器中。
发布于 2019-11-07 05:43:42
git blame -w -M
应该忽略空格和移动代码更改,所以你只需要重新格式化你的代码,并记住在寻找谁的责任时使用这些选项!
https://coderwall.com/p/x8xbnq/git-don-t-blame-people-for-changing-whitespaces-or-moving-code
https://stackoverflow.com/questions/53502654
复制相似问题