更正共享function分支的Git工作stream程?

我正在试图找出适合这种情况的正确的工作stream程:

在共享回购,我们有这些分支:

-master -feature 

function分支是一个共享分支,因为许多开发人员正在共同开发一个新function。 他们正在积极推动他们对function分支的修改。

我试图避免“冲突地狱”的一天, function终于合并回到 。 目前我看到一些select:

1) 主动合并主要 function ,并经常做。 但是,这不是build议在git文档中,我开始明白为什么。 当我尝试这个时,我似乎一遍又一遍地修复同样的冲突。

2) 以某种方式使用rebase。 我读过这个,但它看起来不会工作,因为function分支实际上是共享的。 只需要一名开发人员进行2次重组,其他开发人员也可能因为历史不匹配而产生冲突。

3) 特性分支转换为集成分支,并让开发人员使用自己的独立function分支进行分派,以保持事物的稳定。

4)完全不同的东西?

对于一个共享的分支,我会select#3,并将其作为一个“整合”分支来巩固他们的工作。
开发人员必须使用rebase来在feature之前不断重放他们的private分支,然后再将他们的工作合并到feature ,那样他们就是:

  • 在本地解决任何合并冲突(在他们自己的回购中)
  • 使得最终的合并(从他们的private分支到feature )变得微不足道(通常是快进)

(如“ git rebase vs. merge ”中所述 )

这个想法是,一旦feature分支必须在master合并,没有更多的贡献被接受的feature (分支是“冻结”),你可以放心地重新绑定在master之上,或者直接合并到master
然后你开始一个新的feature分支(如果需要的话,它可以实际上并行启动前一个feature分支)

您可以使用rerere来处理多次看到的合并冲突。

(我不太喜欢选项1,2或3,所以我试图find一个更好的工作stream程,因此我在下面描述如何处理问题,希望有人会告诉我)

  1. 使用其中一个git修补程序队列工具来修补修补程序队列中的function分支。
  2. 使用单独的git存储库来版本控制修补程序队列
  3. 使用通常的git方法在修补程序队列上进行协作。

人们可以明智地将修补程序队列返回到本地的function分支。

function分支的Git工作stream程

过程如下:

第一次:

 git pull git checkout -b sprint-4 git pull origin sprint-4 
  • 以上命令将从git中提取所有文件

  • 将在我们的本地机器上创build名称为sprint-4的分支。

  • 将文件从服务器拉到我们的sprint-4分支。

对于每个新function: –

 git checkout -b <feature-branch>, example: git checkout -n fer-181 git push -u origin <local-branch>:<remote-branch>, example git push -u origin fer-181:fer-181 
  • 在服务器上为此本地分支创build一个远程分支。
  • 将文件从本地分支推送到远程分支。

每日:(在您的function分支上)

 git pull git merge dev 
  • 解决冲突(如果有)
  • 做一天的工作

    git推送起源

function齐全:

 git pull git merge dev 

解决冲突(如果有)

 git checkout dev git merge <feature-branch> git push origin dev 
  • 以上命令将合并我们的特性分支中的主分支的文件。
  • 如果有的话,解决function分支中的冲突。
  • 合并function分支到主分支的文件。