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

koala 2021-3-15 工具git

# 前言

在初始化创库时,可能没有创建.gitignore文件, 或者创建文件时想到的忽略文件不全, 导致需要过滤的文件已经被提交了。

这时再.gitignore文件中添加忽略文件, 发现对已经提交的文件是无效的。那么这一节主要来讲一下应该如何解决。

.gitignore文件只会忽略那些没有被跟踪的文件, 也就是说ignore规则只对那些在规则建立之后被新创建的新文件生效. 因此推荐: 初始化git项目时就创建.gitignore文件.

# 解决办法

首先说一下你可能在网上搜到的办法(不建议使用)

网上有一种方案是:git update-index --assume-unchanged /path/to/file 这个命令是将已经被跟踪的文件, 添加一个标记, 让其不会出现在更新列表中(git status 不会列出标记过的文件), 但是是这种方式只能解决个人问题, 对于团队合作的项目, 其他每个人都需要这么操作, 治标不治本。

  • 真正的解决方案:

分三步进行:

  1. 删除track文件(已经commit的文件), 具体操作如下

    • git rm 要忽略的文件
    • git commit -a -m "删除不需要的文件"
  2. .gitignore文件中添加忽略规则, 例如添加: dist/*

  3. 提交代码并推送到远程仓库

    • 提交.gitignore文件:git commit -a -m "添加ignore 忽略文件"
    • 推送到远程仓库git push [remote]

上面的三个步骤完成后, 针对已经commit 过的文件,忽略规则就生效了, 再修改文件, 提交时, 也不会track;同时其他人同步之后, 新的ignore规则就会对以前track过的文件生效了。

# 给我留言

关注作者公众

和万千小伙伴一起学习

加入技术交流群

扫描二维码 备注 加群