git多分支开发

git多分支开发

虽然网上有很多关于git多分支开发的介绍,但是有时候在项目中使用的多分支还是让我非常混乱。最近我参与了一个“elinux.org 中文版: 嵌入式 Linux 知识库”的翻译计划。

eLinux.org 是 Linux 基金会下属 Consumer Electronics Linux Forum 维护的一个 Embedded Linux Wiki。该 Wiki 全面系统地梳理了嵌入式 Linux 方方面面的知识。 该项目致力于翻译 Embedded Linux Wiki 为中文版。欢迎fork我的分支,一起参与elinux.org的翻译工作!项目:https://github.com/lzz5235/elinux

由于这个项目启动时间不久,经常出现了上游分支大量的修改,此刻我已经开始了一些翻译工作,而我如果从远程拉取修改,会和本地产生严重的冲突,非常麻烦。之后为了解决这个问题,在原有master分支上,我在本地创建了一个development分支,用来开展翻译工作。


$git branch development
$git checkout development

当切换到开发分支,我们就可以开始翻译链接了,当翻译完毕之后,我们需要使用git add、commit提交。然后我们可以切回master,首先我们需要把master分支中的内容更新到最新(可以使用git fetch ,也可以使用git pull)。这里我们可以使用git merge development合并开发分支,这个时候,我们需要一个一个解决冲突,而且产生大量的Merge 的提交,非常不美观与无用。

或者我们在master分子下使用git rebase development,这个时候git会根据开发分支做的修改,这些命令会把”development”分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到”.git/rebase”目录中),然后把”master”分支更新 为最新的”origin”分支,最后把保存的这些补丁应用到”master”分支上。

这其中如果有冲突会一个一个的去解决具体就是执行git rebase –continue/–skip/–abort


$ git checkout master
$ git rebase project/master
$ git push

最后我们就可以顺利的提交了,master分支没有多余的Merge提交!如果我们继续翻译工作,那么切换到development分支,然后进行git rebase master操作。开发分支更新完毕后,我们继续翻译工作!

当然,我们也可以使用git pull –rebase,这个相当于重建了master主线分支,就是上面操作的集合!

###啰嗦半天就是我们要尽量使用git rebase 方式,减少大量不必要的Merge提交!

http://blog.csdn.net/hudashi/article/details/7664631

http://git-scm.com/book/zh/ch3-2.html