首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在不修改git历史的情况下在源代码上运行代码格式化程序?

如何在不修改git历史的情况下在源代码上运行代码格式化程序?
EN

Stack Overflow用户
提问于 2018-11-27 23:13:24
回答 2查看 7.3K关注 0票数 22

我正在尝试使用代码格式化工具来格式化整个repo。这样做时,我希望保留关于谁提交了哪一行的信息,以便像git blame这样的命令仍然显示正确的信息。我的意思是,它应该显示作者之前编辑过的每一行(在格式化之前)。

有一个git filter-branch命令,它允许您从一开始就对repo的每个修订版运行一个命令。

代码语言:javascript
复制
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和其他过滤器类型,但仍然不起作用。必须有一种方法来格式化代码库,同时保留每行的作者信息。

EN

回答 2

Stack Overflow用户

发布于 2021-09-09 12:45:16

您可以让git blame忽略某些提交,这些提交只执行批量重新格式化等操作:

创建文件.git-blame-ignore-revs,如下所示:

代码语言:javascript
复制
 # Format commit 1 SHA:
 1234af5.....
 # Format commit 2 SHA:
 2e4ac56.....

那就这么做

代码语言:javascript
复制
git config blame.ignoreRevsFile .git-blame-ignore-revs

,这样您就不必每次使用git blame时都使用--ignore-revs-file选项。

https://github.com/github/feedback/discussions/5033进行投票,将该功能添加到github的网络指责查看器中。

票数 12
EN

Stack Overflow用户

发布于 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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53502654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档