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

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

大家推荐下小团队(在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分支的时候,应该如何处理?

共收到 16 条回复

大家推荐下小团队(在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没有开源版本么?

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