保持git仓库的干净。
清除git对某个文件或目录的跟踪
使用场景:
- 有时候随着项目的进行,会发现有一些文件或目录不应该被git跟踪,但是已经被git跟踪了,这时候就需要清除git对这些文件或目录的跟踪。
- 不小心上传了一些不应该敏感的数据,需要清除git对这些文件或目录的跟踪。
- …
How to install2
pip install git-filter-repo
More installation ways, see git-filter-repo
How to use1.3
注意使用前一定要将仓库备份,避免误删重要文件。git filter-repo --invert-paths --path PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA
echo "YOUR-FILE-WITH-SENSITIVE-DATA" >> .gitignore
git add .gitignore
git commit -m "Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore"
git push origin --force --all
Manpage of git-filter-repo4
根据使用的这个工具的名字filter,不难想象可以做很多匹配修改的事情,但这里只涉及如何根据文件名或者目录名来清除git对某个文件或目录的跟踪。
1. --invert-paths
反向匹配,即匹配除了指定的文件或目录之外的所有文件或目录。
2. --path <dir_or_file>
指定要匹配的文件或目录。
3. --path-regex <regex>
指定要匹配的文件或目录的正则表达式。
更多的用法,可以参考git-filter-repo manpage