Git多并发开发版本管理咨询:如何实现并行开发、测试及灵活上线的简易方案
首先,我完全理解你们这种并行多版本开发、测试和灵活上线的需求——作为Git新手,确实容易被分支管理搞懵,尤其是你们之前没接触过源码管理工具。下面我会给出一套贴合你们场景的简单易操作的方案,包括分支策略和Worktree的正确用法,帮你们把现有工作流映射到Git上。
核心分支规划(对应你的工作流节点)
我们用不同的分支类型对应你现有各个版本,逻辑清晰,新手也能快速上手:
main分支:对应你的「Live Version」,只有已经上线的稳定代码才会在这里。dev/verX分支:每个并行开发的版本对应一个独立分支,比如dev/ver1、dev/ver2、dev/ver3、dev/ver4——所有这些分支都从同一个初始版本(也就是main分支的初始提交)创建,和你现在的独立文件夹一一对应。test/verY分支:当某个dev/verX完成开发要进入测试阶段时,从对应的dev/verX分支切出测试分支,比如test/ver1(对应DevVer1转TestVer1)。测试过程中如果需要调整代码,直接在test/verY分支修改,不影响原开发分支的工作。
具体操作步骤(一步步来,都是基础命令)
1. 初始化仓库,创建基础分支
首先,把你们的初始版本代码放到一个文件夹里,初始化Git仓库:
git init git add . git commit -m "初始版本 baseline"
然后基于这个初始提交,创建所有开发分支:
# 创建dev/ver1分支并切换过去(如果需要在当前目录操作) git checkout -b dev/ver1 # 回到main分支,创建其他dev分支 git checkout main git checkout -b dev/ver2 git checkout main git checkout -b dev/ver3 git checkout main git checkout -b dev/ver4
2. 使用Git Worktree管理多个并行开发目录
你们之前尝试Worktree没成功,应该是没掌握正确用法——Worktree正好解决你「每个DevVer在独立文件夹」的需求,不用反复切换分支,直接在各自文件夹里写代码:
# 在当前仓库目录外,创建dev/ver1的独立工作目录 git worktree add ../dev-ver1 dev/ver1 # 同理创建其他开发目录 git worktree add ../dev-ver2 dev/ver2 git worktree add ../dev-ver3 dev/ver3 git worktree add ../dev-ver4 dev/ver4
现在你就有4个独立的文件夹dev-ver1到dev-ver4,每个文件夹对应一个开发分支,各自开发互不干扰,提交代码直接在对应文件夹里用git add/git commit即可。
3. Dev版本转Test版本
当某个DevVer(比如DevVer1)开发完成要进入测试:
# 先切换到对应的dev分支(或者在对应的worktree目录里操作) git checkout dev/ver1 # 切出测试分支 git checkout -b test/ver1 # 如果需要给测试单独创建工作目录,同样用worktree git worktree add ../test-ver1 test/ver1
测试过程中如果有bug修复,直接在test/ver1分支(或对应的worktree目录)提交代码即可。
4. Test版本上线到Live
当某个TestVer(比如TestVer3)要上线,把它合并到main分支:
git checkout main # 合并测试分支的代码到main(Live) git merge test/ver3 -m "上线TestVer3版本"
这时候main分支就是最新的Live版本了。
5. 上线版本合并到其他未完成的Dev分支
上线后,需要把Live的变更同步到其他还在开发的dev/verX分支,比如同步到dev/ver1:
git checkout dev/ver1 # 把main分支的变更合并过来 git merge main -m "同步Live版本的上线变更"
如果遇到冲突(不同分支修改了同一部分代码),Git会提示你,只需要打开冲突文件,修改后git add再git commit即可——新手不用怕冲突,Git会在文件里用<<<<<<</=======/>>>>>>>标记冲突位置,你只需要保留正确的代码、删除标记就行。
额外小技巧(适合新手)
- 每次操作前,用
git branch查看当前分支,避免搞错分支; - 用
git status查看当前目录的代码状态,确保提交前没有遗漏; - 如果担心操作错,可以先给分支打标签备份,比如上线前给
test/ver3打标签:git tag release/ver3 test/ver3,以后可以随时通过git checkout release/ver3回到这个版本。
内容的提问来源于stack exchange,提问作者Andrew

