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

Git新手求助:如何实现项目分区,全量备份且仅共享成品内容?

最优Git工作流方案

核心思路

用**子模块(submodule)**是完全适配你需求的方案,搭配远程仓库的分支推送策略,既能保证全量备份,又能单独同步成品内容:

  • 云端主仓库(位置1)保存所有内容(含WORK_IN_PROGRESS和作为子模块的FINISHED),负责完整备份
  • FINISHED作为独立仓库托管在另一云端(位置3),仅同步成品内容,不包含开发过程的冗余历史

具体操作步骤

1. 调整本地工作环境的仓库结构

如果还没将FINISHED设为子模块,按以下步骤操作:

  • 进入本地主仓库目录,删除FINISHED文件夹内的.git目录(若已是子模块则跳过)
  • 初始化FINISHED为独立仓库:
    cd FINISHED
    git init
    git add .
    git commit -m "初始化成品仓库内容"
    cd ..
    
  • 将FINISHED添加为主仓库的子模块:
    git submodule add <位置3的仓库URL> FINISHED
    git add .gitmodules FINISHED
    git commit -m "添加FINISHED作为子模块,关联成品展示仓库"
    
  • 把本地主仓库推送到位置1完成全量备份:
    git push origin main
    

2. 日常开发与备份管理

  • 日常开发时,正常在WORK_IN_PROGRESS和FINISHED目录修改代码
  • 提交主仓库时,会自动记录FINISHED子模块的当前提交哈希,确保主仓库备份了成品的对应版本
  • 定期推送主仓库到位置1,完成全量内容备份:
    git push origin main
    

3. 同步成品到位置3

  • 当FINISHED内容更新后,进入子模块目录推送变更到位置3:
    cd FINISHED
    git add .
    git commit -m "更新成品内容"
    git push origin main
    cd ..
    
  • 返回主仓库,提交子模块的版本更新并推送到位置1,保证备份同步:
    git add FINISHED
    git commit -m "同步子模块到最新成品版本"
    git push origin main
    

4. 他人查看成品的方式

他人只需直接克隆位置3的仓库,就能获取纯净的成品内容:

git clone <位置3的仓库URL>

为什么不直接克隆主仓库到位置3?

主仓库包含WORK_IN_PROGRESS的完整开发历史和未完成文件,直接克隆会暴露非公开内容,且冗余信息过多,完全不符合你“仅展示成品”的需求。子模块方案让两个仓库完全独立,主仓库负责全量备份,成品仓库仅托管最终内容,逻辑清晰且操作高效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:09:32