更正共享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程,因此我在下面描述如何处理问题,希望有人会告诉我)
- 使用其中一个git修补程序队列工具来修补修补程序队列中的function分支。
- 使用单独的git存储库来版本控制修补程序队列
- 使用通常的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分支到主分支的文件。