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
相关产品推荐
相关产品推荐

