最少有三个长期分支
- master: 用于生产环境部署
- testing: 用于测试环境测试
- dev: 用于日常开发
有一些临时分支
- feature-xxx: 用于增加一个新功能
- hotfix-xxx: 用于修复一个紧急bug
(dev)$: git checkout -b feature-xxx # 从dev建立特性分支
(feature-xxx)$: blabla # 开发
(feature-xxx)$: git add xxx
(feature-xxx)$: git commit -m 'commit comment'
(dev)$: git merge feature-xxx --no-ff # 把特性分支合并到dev
(master)$: git checkout -b hotfix-xxx # 从master建立hotfix分支
(hotfix-xxx)$: blabla # 开发
(hotfix-xxx)$: git add xxx
(hotfix-xxx)$: git commit -m 'commit comment'
(master)$: git merge hotfix-xxx --no-ff # 把hotfix分支合并到master,并上线到生产环境
(dev)$: git merge hotfix-xxx --no-ff # 把hotfix分支合并到dev,同步代码
(testing)$: git merge dev --no-ff # 把dev分支合并到testing,然后在测试环境拉取并测试,配置管理人员操作
(master)$: git merge testing --no-ff # 把testing测试好的代码合并到master,运维人员操作
(master)$: git tag -a v0.1 -m '部署包版本名' #给大版本命名,打Tag
Git文档里介绍的Git工作流就很好,使用下面命令即可调出:
其中 master 分支 和 maint 分支合并时用到的 git merge --ff-only 参数非常有意义。
可以避免在 maint 分支的 hotfix 未合并到主线。
你在文档里频繁使用的参数 --no-ff ,其用处主要是让 git log --first-parents 更清晰一些,
还没有其他作用么?