背景
如果在初始化 git 仓库时,没有创建 .gitignore
文件来过滤不需要提交的内容,而是将所有文件都推送到了仓库,后来却发现某些内容无需提交,此时想要再通过创建 .gitignore
文件来忽略,会发现并不会直接生效。
事实上, .gitignore
只会对那些还没有被跟踪(track)的文件/文件夹生效,上面的情景,所有文件/文件夹已经被跟踪了,所以后来创建的忽略规则,不会对他们生效。
解决
要解决这个问题,需要以下步骤:
首先,先将文件从 git 的追踪列表中移除,但保留文件:
|
|
接下来,提交更改:
|
|
最后,推送到远程仓库:
|
|
这样做的效果是:
- 已被追踪的忽略文件会从 git 仓库中移除;
- 本地文件会保持不变;
- 新的 .gitignore 规则会立即生效;
- 其他开发者在拉取代码后,这些被忽略的文件也不会再被追踪。
需要注意:
- 这个操作会修改 git 历史;
- 如果团队协作开发,建议和其他开发者沟通后再操作;
- 操作前最好先备份重要文件。