You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Git仓库仅保留二进制文件最新版本且保留本地未提交修改?

解决方法

1. 暂存本地未提交修改

先把当前未提交的修改临时存起来,避免后续操作丢失:

git stash push -m "临时保存本地未提交修改"

执行后,本地工作区会回到与当前HEAD一致的干净状态。

2. 重写历史,仅保留二进制文件的最新版本

使用git filter-repo工具(Git 2.22+推荐使用,比旧的git filter-branch更可靠)移除指定二进制文件的历史版本。

针对单个/多个指定文件

假设要处理的二进制文件是fileA.bin、fileB.zip,执行:

git filter-repo --path fileA.bin --path fileB.zip --invert-paths --force

接着恢复当前最新版本的这些文件:

git restore HEAD -- fileA.bin fileB.zip
git add fileA.bin fileB.zip
git commit -m "恢复二进制文件的最新版本"

针对某一类后缀的文件

如果要处理所有.bin后缀的二进制文件,执行:

git filter-repo --path-glob '*.bin' --invert-paths --force
git restore HEAD -- '*.bin'
git add '*.bin'
git commit -m "恢复所有.bin文件的最新版本"

3. 恢复本地未提交的修改

把之前暂存的修改恢复回来:

git stash pop

如果出现冲突,手动解决后提交即可。

4. 强制推送到远程仓库

由于重写了历史,需要强制推送覆盖远程仓库(仅在你是唯一开发者的情况下执行):

git push --force origin <你的分支名>

例如分支为main时,执行git push --force origin main。

注意事项

  • 操作前建议备份原始仓库,避免失误无法恢复
  • git filter-repo会修改本地仓库历史,执行前确保没有其他未处理的分支
  • 强制推送后,远程仓库历史会被覆盖,后续本地操作需基于新历史进行

内容的提问来源于stack exchange,提问作者Daahrien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:52:13