Git分支策略求助:如何为每个教程创建可合并的独立特性分支?
适合交互式教程开发的Git分支策略方案
问题根源
你之前的合并冲突,本质是特性分支从main_backup创建时携带了大量未完成教程的文件,而develop分支基于清空后的main,这些文件在develop中处于删除状态,两者合并时自然会产生文件存在/删除的冲突。
规范分支策略实现步骤
1. 固化基础分支角色
- main分支:严格只存放已发布给学生的最终内容,保持绝对干净,仅接受从
develop分支的合并操作。 - develop分支:作为集成缓冲区,专门收集所有已完成且通过审核的教程,定期合并到
main完成批量发布。 - feature/tutorial-xxx分支:每个教程对应独立的特性分支,仅用于单个教程的开发、自测和审核。
2. 特性分支的正确创建与开发流程
- 从最新的develop分支拉取新特性分支,以创建
tutorial-1为例:git checkout develop git pull git checkout -b feature/tutorial-1 - 在该分支内仅专注于
tutorial-1目录的开发,无需操作其他教程文件(develop本身已无未完成内容,不存在冗余文件需要删除)。 - 完成开发并通过审核后,将特性分支合并到
develop:
由于分支基于git checkout develop git merge feature/tutorial-1 --no-ffdevelop创建且仅修改自身教程目录,几乎不会产生合并冲突。
3. 历史遗留内容的迁移
如果main_backup中还有未完成的教程需要后续开发,不要直接从main_backup拉分支,而是:
- 从
develop拉取对应特性分支 - 将
main_backup中该教程的目录内容复制到特性分支 - 提交并推进开发,后续按正常流程合并到
develop
4. 批量发布流程
当develop中积累了足够多的已审核教程后,直接将develop合并到main:
git checkout main git merge develop --no-ff git push origin main
确保main始终保持干净的可发布状态。
核心优势
- 每个教程分支完全独立,便于单独审核、修改和回滚
main分支彻底隔离开发过程,只保留最终可发布内容develop作为集成缓冲区,避免单个教程的开发直接影响生产分支
内容的提问来源于stack exchange,提问作者uke
相关产品推荐
相关产品推荐

