git如何忽略已经提交的文件

# 前言
在初始化创库时,可能没有创建.gitignore
文件, 或者创建文件时想到的忽略文件不全, 导致需要过滤的文件已经被提交了。
这时再.gitignore
文件中添加忽略文件, 发现对已经提交的文件是无效的。那么这一节主要来讲一下应该如何解决。
.gitignore
文件只会忽略那些没有被跟踪的文件, 也就是说ignore规则只对那些在规则建立之后被新创建的新文件生效. 因此推荐: 初始化git项目时就创建.gitignore文件.
# 解决办法
首先说一下你可能在网上搜到的办法(不建议使用)
网上有一种方案是:git update-index --assume-unchanged /path/to/file
这个命令是将已经被跟踪的文件, 添加一个标记, 让其不会出现在更新列表中(git status
不会列出标记过的文件), 但是是这种方式只能解决个人问题, 对于团队合作的项目, 其他每个人都需要这么操作, 治标不治本。
- 真正的解决方案:
分三步进行:
删除track文件(已经commit的文件), 具体操作如下
git rm 要忽略的文件
git commit -a -m "删除不需要的文件"
在
.gitignore
文件中添加忽略规则, 例如添加:dist/*
提交代码并推送到远程仓库
- 提交
.gitignore
文件:git commit -a -m "添加ignore 忽略文件"
- 推送到远程仓库
git push [remote]
- 提交
上面的三个步骤完成后, 针对已经commit 过的文件,忽略规则就生效了, 再修改文件, 提交时, 也不会track;同时其他人同步之后, 新的ignore规则就会对以前track过的文件生效了。
# 给我留言
← Git 常见问题汇总 软件资源 →