先贴原文:https://nvie.com/posts/a-successful-git-branching-model/
总结如下:正常一个 repository 是有main分支(永远保持着production-ready state), develop分支(研发的分支,reflects a state with the latest delivered development changes for the next release), features分支(每当想继续开发一个新的功能), release分支(minor bug fixes and preparing meta-data for a release), hotfix分支(prepare for a new production release, 当出现production 版本出现 bug时,会用到)
main和develop 的分支是 无线长的,而其它几个是有线长的, 比如 一个feature 开发完成 又 merge之后,就会删掉这个分支了
想开发一个新功能A, 就新建一个 feature_A分支:
$ git checkout -b feature_A develop
(这一步可以分成两步: 新建一个分支: git branch feature_A
切换到这个分支: git checkout feature_A)
可以发现,每当我们切换到新的分支时,本地仓库(即 origin) 就会变成新的branch 的仓库 (如果切换前后的两个分支 差别很大,就很容易发现),可以通过 git branch 查看所有分支 和 当前所在分支
注意:这里如果使用git checkout到从feature_A分支到develop分支,一定要git add . 然后git commit –m, 否则会把未做完的工作带到develop分支,见 git之 分支切换时相互影响的问题_Song_93的博客-CSDN博客
$ git push origin [branch name] 把新分支push到github上
——————————————
假设我现在开发完成 A 功能之后,我就可以merge到 develop分支了:
$ git checkout develop 先切换到develop 分支
$ git merge --no-ff feature_collision_avoidance 把新的feature merge到当前的develop分支, --no-ff 保存feature分支的commit信息
$ git branch -d feature_collision_avoidance 删除本地这个feature分支
(git push origin :[branch name]) 删除远程这个feature分支
$ git push origin develop