用惯了svn,对于git的merge和branch始终不太会用,srs在github上后开始用git,用了一年多才慢慢搞清楚一点点东西。
git的merge很靠谱,不用每次都手工merge,必须使用branch的merge,否则会很慢。
不过merge需要搞清楚那些branch,以及merge,还有commit之类,需要花些时间。
一般的惯例是master+release+develop,或者加其他的branch,srs没有那么大,就把master和develop合并了。
也就是srs的branch只有develop(master)和release。
就算只有develop+release,也有merge,release上因为只fix bug,所以改动会小,如果有bug修改可以merge到develop。标准的操作是从release打hotfix的branch,然后fix后merge到release和develop,或者直接从release merge到develop也可以。
有时候有临时的feature,悬而未决的,可以新开branch。但是这些branch都必须和develop保持merge。等完全确定后再merge回develop。
这个图中,srs-librtmp有一些修改,然后从master merge。
1.0release上有bug fix,还未有merge到master,接下来就是master merge 1.0release的bug fix。
在master分支上,使用git merge --no-ff 1.0release之后的图如下:
也就是说:
1. 1.release => master
2. master => srs-librtmp
等srs-librtmp分支有结果了:
3. srs-librtmp => master
这种是衍生式的分布式开发,都是不断分支和合并往前走。
git还有其他的很多用法,确实很灵活,譬如加入多个remote可以推送到不同的git服务器。
值得好好学学,门槛确实比svn高很多,这篇文章写得很好,值得好好读读:http://www.open-open.com/lib/view/open1328070090108.html