如何让Web服务器Git仓库排除源文件,保留开发仓库及历史提交
移除Git远程仓库中指定文件但保留本地副本的解决方案
一、确认本地排除规则
首先确保本地仓库的文件排除规则生效,避免后续这些文件被重新提交:
- 在本地仓库的
.gitignore文件中添加以下规则(如果使用.git/info/exclude单独配置本地排除,也可继续使用该文件):*.fla *.ai - 提交这个规则变更:
git add .gitignore git commit -m "Add ignore rules for .fla and .ai files"
二、移除已追踪文件的Git引用(保留本地文件)
使用--cached参数执行git rm,可以移除Git对这些文件的追踪,但不会删除本地的实际文件:
- 如果文件都在当前目录,执行:
git rm --cached *.fla *.ai - 如果文件分布在子目录中,使用递归匹配:
git rm --cached **/*.fla **/*.ai - 提交这个变更,记录停止追踪这些文件的操作:
git commit -m "Stop tracking .fla and .ai files"
三、推送到远程服务器
将变更推送到远程仓库,此时远程服务器上的.fla和.ai文件会被移除,但本地的文件会完整保留:
git push origin <你的目标分支名>
四、彻底清理远程仓库历史(可选,最大化节省存储空间)
如果需要彻底从Git历史中删除这些文件的所有版本(进一步压缩仓库体积),可以使用git filter-repo工具重写历史:
- 执行历史重写命令,移除所有
.fla和.ai文件的历史记录:git filter-repo --path-glob '*.fla' --path-glob '*.ai' --invert-paths - 强制推送到远程仓库(注意:此操作会重写远程仓库历史,团队成员需要重新克隆仓库或执行
git fetch origin && git reset --hard origin/<分支名>同步):git push origin <你的目标分支名> --force - 清理本地仓库的冗余对象,释放空间:
git reflog expire --expire=now --all git gc --prune=now --aggressive
内容的提问来源于stack exchange,提问作者Bruno Costa Pinheiro
相关产品推荐
相关产品推荐

