长期分支

在 master 中保留完全稳定(或者说相对稳定)的代码,即已经发布或即将发布的代码。 同时有个名为 develop 或 next 的平行分支,专门用于后续的开发,或仅用于稳定性测试, 开发分支中的代码稳定后合并到 master 分支。

长期分支可以用来维护不同程度的稳定性,某些大项目还会有个proposed(建议)或 pu(proposed updates,建议更新)分支, 它包含着那些可能还没有成熟到进入next 或master 的内容。

使用多个长期分支的做法并非必需,不过一般来说,对于特大型项目或特复杂的项目,这么做确实更容易管理。

特性分支

一个特性分支是指一个短期内,用于实现单一特性或与其相关工作的分支。

远程分支

一次 clone 会建立自己的本地分支 master 和远程分支 origin/master,他们都指向 origin/master 分支的最后一次提交。

git fetch origin 会从 origin 上获取本地仓库 master 分支中尚未有的数据,更新本地数据库,然后把 origin/master 的指针 移动到他的最新位置

推送本地分支到远程

将本地分支 local-branch 推送到 origin 服务器上,并命名为 server-branch

git push origin local-branch:server-branch

跟踪分支

从远程分支检出的本地分支,称为跟踪分支(tracking branch)。跟踪分支是一种和远程分支有直接联系的本地分支。 在克隆仓库时,Git 通常会自动创建一个master 分支来跟踪origin/master。

删除远程分支

git push [远程名] [本地分支]:[远程分支]
git push origin :server-branch

本地分支为空,表示提取空白然后把它变成远程分支

合并&衍和

把一个分支整合到另一个分支有两种办法:merge(合并) & rebase(衍和)

merge 会把两个分支最新快照以及二者最新共同祖先进行三方合并。

rebase 是把一个分支从共同祖先处开始到其最新快照的变化在另一个分支上打一遍。

git checkout experiment
git rebase master

合并结果中最后一次提交所指向的快照,无论是通过一次衍合还是一次三方合并, 都是同样的快照内容,只是提交的历史不同罢了。 最后整合得到的结果没有任何区别,但衍合能产生一个更为整洁的提交历史。 衍合按照每行改变发生的次序重演发 生的改变,而合并是把最终结果合在一起。

*永远不要衍合那些已经推送到公共仓库的更新*

blog comments powered by Disqus