Git克服分支(一)

​ 使用git进行合并分支说难也不难,因为就使用一下那几个命令而已!但是不小心操作总会有一些难以预料的问题出现、但是coder们总是会做出奇怪的举动。

​ 合并分支的时候O(∩_∩)O

合并分支

快速了解下分支流程。

​ 分支类似科幻电影里面经常出现的平行宇宙,只是分支之间还能合并。

​ git默认的是master分支,如果所有的开发都在master分支,这其实非常操蛋。这么吊的工具怎么可能没有好的分支策略。

  • 正常分支

    • origin/master:主分支
    • origin/develop:开发分支

      em 首先代码库默认有一个,且只有一个主分支Master,这个分支是仓库初始化的时候默认创建的。但实际上还有另一主分支 develop(开发主分支)、只是很多开发并不会启用develop分支。当develop分支上代码达到一定稳定的时候,所有的改动就会被合并到master中。并用一个发行版来标记它。所以每当被合并到master中就意味着一次release版本发布。这个时候才会使用(hook script)钩子去自动构建我们的项目、并部署正式服务器。

  • 临时分支

    • feature:功能分支(特征分支)
    • release:预发布分支(发行分支)
    • fixbug:修补bug分支(热补丁分支)

      为什么会有临时分支这种东西,上面说到主分支是用来管理重大版本发布的。日常的开发应该是在另外一条分支上进行develop,而临时分支是在develop分离出来做迭代以及bug修复的。达到阶段目标在合并到develop分支当中。


这张图很久以前看到的,源地址忘记了,若发现侵权请联系本人删除。

  • Git创建Develop分支的命令:
1
git checkout -b develop master

将Develop分支发布到Master分支的命令:

1
2
3
4
# 切换到Master分支
git checkout master
# 对Develop分支进行合并
git merge develop

基本上只有会是develop分支合并到master中。由于master是必须使用的就不在多介绍,下面说下其它分支。

Feature

​ 这个分支一般来说是不会存在原始仓库的。而是存在开发人员的仓库中。

  • 当开始开发一个新功能时,从 develop 分支分离出来。
1
2
# 从 develop中分离出一个分支
git checkout -b myfeature develop
  • 合并一条已经完成的 Feature 分支到 develop 分支

完成了的功能需要合并到 develop 分支,以确切把其添加到下一个要发行的版本中。

1
2
3
4
5
6
7
8
9
10
11
# 切换到develop分支中
git checkout develop

# 对myfeature分支进行合并
git merge myfeature

# 删除myfeature分支 合并完一定要删除。
git branch -d myfeature

# 推送至develop分支。
git push origin develop

Release

​ 不要认为这是从master中分出来,这实际上是从develop分支中发布的。当我们需要迭代一个稳定版本的时候我们就会从develop中分离一个分支名字用于展示指定的新版本号。

  • 创建一条 Release 分支
1
2
3
4
5
# 从develop中分离出release-1.2
git checkout -b release-1.0 develop

# 推送到本地仓库中。
git commit -a -m "create version number to 1.0"

release 可能会存在一段时间、等待bug修复。不要在这个分支在加大功能,这非常扯蛋。当确定没问题之后合并到master中。

1
2
3
4
5
6
7
8
# 切换到master主分支
git checkout master

# 合并分支
git merge release-1.0

# 打标签。
git tag -a 1.2

注意不光要合并到master、develop分支也要合并。

1
2
3
4
5
6
7
8
# 切换到develop主分支
git checkout develop

# 合并分支
git merge release-1.0

# 合并完 master 、develop分支可以删除release了。
git branch -d release-1.0

Hotfix

​ 这个分支就是来修复bug的。其实和release分支很相似,只不过生命周期更短,可能需要合并多次。

从master分离出来之后合并时候需要合并两次。

  • 创建一条 Hotfix 分支
1
2
3
4
5
# 从master中分离出hotfix-1.0.1
git checkou -b hotfix-1.0.1 master

# 推送到本地仓库
git commit -a -m "create hotfix-1.0.1"

​ 改玩bug了就可以合并到master 、 develop中了。

1
2
3
4
5
6
7
8
# 切换到master
git checkout master

# 将hotfix合并到master中。
git merge hotfix-1.0.1

# 打标签
git tag -a 1.3

​ 在把改动的代码合并到develop中。

1
2
3
4
5
6
7
8
# 切换到develop
git checkout develop

# 将hotfix合并到develop中。
git merge hotfix-1.0.1

# 删除hotfix。
git branch -d hotfix-1.0.1

合并分支操作并没有那么简单,分支流程大致是这样的。