Git Ignore 教程与操作指南
.gitignore 作用与基本概念
.gitignore 文件用于告诉 Git 哪些文件或目录不需要加入版本控制。常见场景包括忽略系统生成的临时文件、构建产物、日志文件以及依赖目录等。
.gitignore 文件基本格式
#:注释/:表示路径的结尾*:表示通配符
常见的 .gitignore 示例
# macOS 系统文件
.DS_Store
# Python 缓存与虚拟环境
__pycache__/
*.py[cod]
*.egg-info/
.venv/
# Node.js 相关
node_modules/
dist/
build/
# 日志与环境文件
*.log
.env
! 用法
- 使用
!可以取消忽略某个文件或目录。
例如,忽略一个文件夹,但不忽略该文件夹中的某个特定文件或子文件夹。
# 忽略所有文件和文件夹
folder/*
# 不忽略 folder/subfolder/
!folder/subfolder/
如何设置 .gitignore 以忽略特定文件夹,但跟踪某些文件
假设你希望忽略 Model_Test/torch3_Test/BG_Test2/dataset_16/ 路径下的所有文件,但保留该路径下的 data_1 文件夹。操作如下:
-
修改
.gitignore文件# 忽略 dataset_16 下的所有文件和文件夹 Model_Test/torch3_Test/BG_Test2/dataset_16/* # 但是不忽略 dataset_16/data_1 文件夹 !Model_Test/torch3_Test/BG_Test2/dataset_16/data_1/ -
从 Git 中移除不需要跟踪的文件
如果这些文件已经提交到 Git 上,你需要从 Git 的索引中移除它们,但保留本地文件。使用git rm --cached命令从 Git 索引中移除它们。# 停止跟踪 dataset_16 中除 data_1 外的所有文件 git rm -r --cached Model_Test/torch3_Test/BG_Test2/dataset_16/* git add .gitignore git commit -m "Add data_1 to .gitignore and stop tracking other files in dataset_16" git push -
验证操作:
使用git status检查文件状态,确保不再跟踪不需要的文件,data_1仍在跟踪中。git status
如何删除已提交到远程的文件,并且忽略它们
如果你已经提交了本应被忽略的文件,并且它们已经推送到远程仓库,你需要从 Git 中移除这些文件(本地文件不受影响)。
-
修改
.gitignore文件:确保要忽略的文件已经加入.gitignore,例如:# 忽略 node_modules 文件夹 node_modules/ *.log .env -
从 Git 索引中移除不需要的文件:
# 停止跟踪这些文件(保留本地文件) git rm -r --cached node_modules/ git rm --cached .env git rm --cached *.log -
提交
.gitignore更改与文件移除操作:git add .gitignore git commit -m "Add .gitignore and untrack unnecessary files" git push origin main -
清理本地忽略的文件(可选):
如果你还希望删除本地工作区中的忽略文件,可以使用git clean命令:# 预演:查看将删除哪些文件 git clean -ndX # 真正删除:清理被忽略的文件 git clean -fdX
小结
.gitignore文件用于忽略不需要的文件和目录。- 在首次提交时,可以提交需要的文件,后续通过
.gitignore来忽略它们并将它们从 Git 索引中移除。 git rm --cached允许从 Git 索引中移除文件(不删除本地文件)。- 使用
git clean可以清理本地忽略的文件。