如何配置Git在提交前移除特定注释行(含本地文件)
自动移除Git提交中特定注释行的解决方案
我使用的一款工具会自动向代码中添加特定注释行:
// Added by blahblah
由于无法关闭该功能,我需要配置Git自动移除本地文件及提交记录中的此类注释行,具体需求如下:
- 移除所有前置任意空格/Tab的
// Added by blahblah注释行,确保本地文件和提交记录中均无该行; - 若需重新暂存修改后的文件,Git需自动完成此操作。
我先后尝试了三种方案:
- 使用IDEA的File Watchers插件,编写bash脚本批量处理Java文件,但插件无限循环运行,无法正常编辑代码,遂放弃;
- 使用Git Hooks,编写prepare-commit-msg和pre-commit脚本,但起初无效果;
- 配置.gitattributes的filter规则,但仅能在提交时移除注释,无法修改本地文件,不符合需求。
最终发现问题根源:之前设置了git config --global core.hooksPath,导致本地.git/hooks目录下的钩子脚本无法运行。修改该配置后,以下pre-commit脚本可正常工作:
#!/bin/bash set -x # 这个是新学到的... 感谢相关信息! for FILE in $(git diff --cached --name-only --diff-filter=ACM); do # '--diff-filter' 是必需的 if [[ $FILE == *.java ]]; then # 我只需要处理Java文件 echo Removing comment from ${FILE} sed -i '/^[[:space:]]*// Added by blahblah/d' "$FILE" git add "$FILE" # 这行在第二次尝试时就已经写了 fi done
目前所有需求均已满足。
内容的提问来源于stack exchange,提问作者tetratheta
相关产品推荐
相关产品推荐

