多人合作的git使用
git merge 的 —no-ff 参数
git merge 默认是”快进式合并”(fast-farward merge)。这样合并操作会直接将Master 指向 develop 分支
上图有多分支合并的结果图,可以看到 使用—no-ff的提交流程更清晰
分支管理
git flow 只存在两个长期分支master 和 develop
其他分支命名必须遵照规则,在合并之后立即删除。
|
|
master 分支代码是不可更改的。
正常流程中将准备发布的dev上的代码合并入master中再进行部署
需要修复bug,则新建fixbug分支,完成后分别合并入dev与master
主分支保持同步
请勿在多人工作分支上进行变基操作
fetch更新本地仓库两种方式:
|
|
合并多次commit
开发的时候我们通常会在开发分支多次commit,但是对于多人合作来说,很多commit是无用的信息。如果将所有commit信息全部合并进git的baseline中,会导致commit信息过多并且混乱
git merge –squash abc
–squash选项的含义是:不保留待合并分支上的历史信息,也不提交、不移动HEAD,因此需要一条额外的commit命令。
其效果相当于将another分支上的多个commit合并成一个,放在当前分支上,原来的commit历史则没有拿过来。
判断是否使用–squash选项最根本的标准是,待合并分支上的历史是否有意义。
合并的时候—squash 参数可以将分支上所有的变动改为一次commit,使用merge命令后需要在合并后的分支上将变动添加,commit一次,这样在分支上的多次commit在git的baseline上就只会有一次commit。
但是—squash 和 —no-ff参数不可一并使用。
—squash 和 —no-ff 是不同的提交风格
fast-farward式的merge通过—squash 可以形成单一的整洁的提交历史记录
—no-ff 式的merge 形成的提交历史记录可以显示详细的提交历史