Ignoring any 'bin' directory on a git project
Ignoring any ‘bin’ directory on a git project
技术背景
在Git项目中,有时我们希望忽略特定名称的目录,比如bin
目录,以避免将编译生成的文件或临时文件纳入版本控制。在Git 1.8.2版本之前,**
在.gitignore
文件中没有特殊含义,从1.8.2版本开始,Git支持**
表示零个或多个子目录。
实现步骤
配置.gitignore文件
若要忽略目录树中当前层级以下所有名为bin
的目录,可在.gitignore
文件中添加如下模式:
1 |
|
此模式会忽略所有名为bin
的目录及其子目录,但不匹配名为bin
的普通文件或符号链接。
若要同时匹配大小写的bin
目录,可使用:
1 |
|
移除已跟踪的目录
若Git索引中已有bin
文件夹且不再想跟踪,需显式移除它们。因为Git不会仅因新的.gitignore
模式匹配而停止跟踪已跟踪的路径。可执行以下命令从索引中递归移除文件夹(仅从索引移除,不删除本地文件):
1 |
|
刷新本地仓库
若要忽略本地仓库中已存在的目录,编辑.gitignore
文件后,需在根目录运行以下命令刷新本地仓库并取消暂存被忽略的文件:
1 |
|
核心代码
.gitignore文件示例
1 |
|
移除已跟踪文件并提交更改
1 |
|
最佳实践
- 使用全局
.gitignore
文件:对于通用的忽略规则,可创建全局.gitignore
文件并配置Git使用它,避免在每个项目中重复配置。例如,可使用GitHub提供的VisualStudio.gitignore文件。 - 定期清理索引:定期检查并清理Git索引中不再需要跟踪的文件和目录,保持版本库的整洁。
常见问题
.gitignore文件不生效
若.gitignore
文件配置后仍无法忽略某些文件或目录,可能是这些文件已被纳入版本控制。此时需先从索引中移除这些文件,再提交更改:
1 |
|
大小写敏感问题
在某些情况下,.gitignore
文件的匹配可能是大小写敏感的。若要同时匹配大小写的目录名,可使用方括号指定大小写范围,如[Bb]in/
。
特殊字符或路径问题
若要忽略特定子目录下的bin
目录,可使用**
表示零个或多个子目录,如**/bin/
。但需注意,不同Git版本对**
的支持可能不同。在Git 2.13.3及以后版本,直接在.gitignore
文件中写bin
应能忽略bin
目录及其所有子目录和文件。
Ignoring any 'bin' directory on a git project
https://119291.xyz/posts/ignoring-any-bin-directory-on-a-git-project/