以项目中的target文件夹为例
1. 检查 Git 是否跟踪了 target/
git ls-files --cached | grep target
如果是文件类型:
git ls-files --cached | grep '\.iml$'
如果没有任何输出,说明 target/
目录已经 不在 Git 索引中,不需要执行 git rm -r --cached target/
了。
如果 target/
目录仍然被 Git 跟踪,执行以下命令来移除它:
git rm -r --cached target/
如果是 多模块项目,可以执行:
git rm -r --cached $(git ls-files --cached | grep target)
如果是文件类型
git rm --cached $(git ls-files --cached | grep '\.iml$')
2. 添加 .gitignore
规则
确保 .gitignore
文件中包含:
target/
或者:
**/target/
最后的.gitignore文件内容
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
*.iml
.idea/
.gitee
.git
**/target/
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
批量删除已经被跟踪的文件
# 1. 删除所有 .iml 文件(仅从 Git 索引中移除,不影响本地)
git ls-files --cached | grep '\.iml$' | xargs git rm --cached
# 2. 删除所有 target 目录
git ls-files --cached | grep '/target/' | xargs git rm -r --cached
# 3. 删除 .idea 目录
git rm -r --cached .idea
# 4. 删除 .gitee 目录
git rm -r --cached .gitee
# 5. 删除 .git 目录
git rm -r --cached .git