本地删除已push文件后再push新文件,GitHub是否会保留所有文件?
方案可行性结论
你描述的基础工作流无法直接实现,存在两处核心限制,调整操作逻辑并搭配对应工具后可以满足需求。
核心限制说明
- Git默认会同步文件删除状态:如果你本地删除了已经推送的旧文件,后续如果使用
git add 目录名这类全量添加命令,Git会自动记录旧文件的删除操作,推送到远端后GitHub上的旧文件也会被同步删除。 - GitHub普通推送存在文件大小限制:单文件超过100MB会被直接拦截推送,你提到的15GB以上大文件无法通过普通Git操作直接上传到GitHub仓库,且普通Git也不适合存储大体积二进制文件,会导致仓库体积急剧膨胀,后续操作效率极低。
可落地的调整方案
你可以按照以下规则调整操作,即可实现需求:
- 提前安装配置Git LFS:这是Git官方提供的大文件存储扩展,专门用于解决Git存储大文件的问题。配置完成后在仓库内开启对应大文件格式的追踪,大文件会单独存储在LFS存储池,不会占用普通Git仓库的体积。
- 每次推送新文件时严格执行以下操作,避免误删远端旧文件:
- 仅添加本次需要推送的新文件到暂存区,不要全量添加整个目录:
git add 目标目录/本次要上传的新文件名 - 提交暂存的新增文件:
git commit -m "新增[批次标识]处理文件" - 拉取远端最新内容避免冲突:
git pull - 推送到GitHub远端仓库:
git push - 推送完成后再删除本地的已推送文件即可。
- 仅添加本次需要推送的新文件到暂存区,不要全量添加整个目录:
- 注意GitHub免费版Git LFS有10GB总存储、每月1GB流量的额度限制,如果你的总文件量超过该额度需要升级付费方案,提前做好成本评估。
内容的提问来源于stack exchange,提问作者rick458
相关产品推荐
相关产品推荐

