Git 小团队 (10 人下) 的 git flow

flowerwrong · 2014年12月04日 · 最后由 mogodb 回复于 2015年03月07日 · 5947 次阅读

大家推荐下小团队 (在 10 人以下) 的 git 协作工作流,以产品开发/迭代为主。

git branch -b my_name # 私有分支
git commit
git checkout master
git pull
git merge my_name
git push origin master

比如说除了master分支外,一般都会有一个dev分支,featuren分支等,当几个人协作一个feature分支的时候,应该如何处理?

大家推荐下小团队 (在 10 人以下) 的 git flow + github issue + trello, 以产品开发/迭代为主。

一年多前短暂使用过 git flow,对产品整个流程很好,但是感觉挺麻烦的。

#1 楼 @liwei78 #2 楼 @ruby_sky 大意是一样的,但不是指具体的那个 gitflow, 而是 git 协作工作流, 类似以下流程,提升到 10 人的时候方便大家一起协作。

git branch -b my_name # 私有分支
git commit
git checkout master
git pull
git merge my_name
git push origin master
# just do thins on master branch
# hack hack hack
git commit
git fetch
git rebase
# sometimes you need git rebase --continue
git push

git flow 有好多帖子,我一直用 sourcetree 来管理,code review 很方便。

#5 楼 @liwei78 git flow 确实有很多中模式,所以就是想找一种适合小型团队的,并且经过实践认证的,这样以后少走弯路。

8 楼 已删除

#3 楼 @flowerwrong 这个属于 github 模式吧?现在开发一直是这样,并且不建议 git merge(以前一直是),后来使用了 git rebase,log 清晰很多,而且 git rebase 强大很多!

我理解的 git flow 是这样个子的:http://ihower.tw/blog/archives/5140

ihower 那篇文章我读了好多遍,补充几个理解:

1、我们开发组维护 develop 分支,branch 一个 feature。 2、QA 介入的时候,使用的是 release 分支。 3、hotfix 在 release 上做,也可以在 develop 上做,关键在于 6 4、release 分支在完成后,merge 到 develop 和 master,然后删掉 relase 分支。 5、staging 分支和 release 分支一个概念 6、经常重做 release 分支,保持 QA 测试到最新得 feature 和 hotfix。 7、rebase 的确比 merge 干净很多

这张图不错,看着干净很多。

git flow 开发会使 git 树很乱,因为有很多的分支去 merge, 但是好处是可以多分支开发。但是楼主的这种开发形式,完全可以用 git flow 来替换。

merge 会把 git 树搞的很乱,尤其几个人一起 merge 的时候。我觉得除了 PR 的那个 merge 无法避免,能 rebase 的就不要 merge。

#12 楼 @liwei78 我觉得除了 PR的那个 merge 无法避免 这个 merge 是指?可以强制使用 rebase

#13 楼 @flowerwrong

图上这个 PR 无法避免,其他是 merge 可以避免的。

#9 楼 @ruby_sky #14 楼 @liwei78 是 git 模式。其实也就是团队的workflow。 另外,我试了下git rebase,发现他的 log 和merge的 log 也就是是多了一条merge xxxx。 还有

# in branch master
# commit a obj at 15.33

# in branch rebaseA
# commit a obj at 15.35
git rebase master
git checkout master
git merge master
git log
# commit a obj at 15.33  注意时间
# commit a obj at 15.35  注意时间

但是,如果我在master里面做rebase,log 结果就不一样了。

# in branch master
# commit a obj at 15.33

# in branch rebaseA
# commit a obj at 15.35

# in branch master
git checkout master
git rebase branchA
git log
# commit a obj at 15.35  注意时间
# commit a obj at 15.33  注意时间

我看 http://git-scm.com/book/zh/v2/Git-Branching-Rebasing , 是先rebase,然后通过merge移动指针,这样有什么区别?

#15 楼 @flowerwrong rebase 会重建 MD5,merge 不会而是加一个 merged 信息在目标分支上。所以小的 feature 开发是没必要 merge 回去的。 如果是重要的 feature,该 merge 还是要 merge 的,尤其是冲突比较多的时候。

#1 楼 @liwei78 trello 没有开源版本么?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号