在之前的介绍中我们讨论了三种分支的情况(短期分支,相当于nightly),但在实际中并不足够.

本地分支

许多开发者喜欢同时拥有多个分支而不仅仅只有一个,比如仅在 master 分支中 保留完全稳定的代码,即已经发布或即将发布的代码。与此同时,他们还有一个名为 develop 或 next 的平行分支,专门用于后续的开发,或仅用于稳定性测试——当然 并不是说一定要绝对稳定,不过一旦进入某种稳定状态,便可以把它合并到 master 里,这时我们把它想像成工作流比较容易理解

Alt
工作流

此时,一个大型开发会是这个样子

Alt
大型开发

我们必然会舍弃一些提交的同时合并一些,如我们抛弃原来的 iss91 分支,将iss91v2和dumbidea 进行合并,最后会是

Alt
大型开发

远程分支

当分支用于远程时,情况会更复杂.从git服务器拉取代码后,git会自动为我们创建了origin/master分支,我们就从这里开始讨论.

同步合并

当我们拉回代码进行修改时,别人可以已经将修改推送到服务器

Alt
分布开发

我这时想推送到服务器,怎么办呢?

我们可以先同步git fetch origin,这时我们就又有3头问题了.

Alt
分布开发
怎么处理你应该知道了吧

多远程分支

现在我们假设还有一个开发小组服务器teamone,拉回来后就成了这样

Alt
分布开发

推送分支

假设你在远程仓库有写权限,你有一个分支叫serverfix,我们就可以通过git push (远程仓库名) (分支名:重命名)进行操作

这时如果别人进行同步,他们会获得一个serverfix的分支. 但是别人是不能修改这个同步下来的分支(origin/serverfix)的,当然如果你拉下来的话也是一样的.这时你可以新建一个分支进行修改git checkout -b [分支名] [远程仓库名]/[分支名]

删除远程分支

1
git push [远程仓库名] :[分支名]