2010-09-29 101 views
40

我试图找出造成这种情况的正确的工作流程:更正共享功能分支的Git工作流程?

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

-master 
-feature 

功能分支是共享分支,因为许多开发人员正在共同研究一项新功能。他们正在积极推动他们对功能分支的改变。

我试图避免“冲突地狱”的那一天功能终于被合并到。目前,我看到一些选项:

1)积极合并功能,并且经常这样做。但是,这不是建议在git文档中,我开始明白为什么。当我尝试这个时,我似乎一次又一次地解决了同样的冲突。

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

3)打开功能分支到集成分支,并有开发者使用自己独立的特性分支与垫底让事情变得理智。

4)完全不同的东西?

回答

24

对于共享分支,我将使用#3,并将其用作“集成”分支来巩固其工作。
开发商将不得不使用重订其工作合并回feature之前不断重播上的feature顶部的private分支,这样,它们分别是:

  • 解决本地(在自己的回购协议)的任何合并冲突
  • 使得最终合并(从他们private分支feature)(如"git rebase vs. merge"答案描述)是小事一桩(通常快进)

这个想法是,一旦feature分支必须在master中合并,feature(该分支“冻结”)上不再接受任何贡献,并且您可以首先安全地将其重新分配在master之上,或者合并它直接到master
,然后你开始一个新的分支feature(如果需要的话,可以真正开始在以前feature分支的平行)

+3

我认为开发通常应该发生在每个开发者分支上,并且共享分支通常应该仅用于集成是一个很好的经验法则。 – 2010-09-29 07:22:15

+1

我不太熟悉rebasing,所以我会问这个问题:在这种情况下,用户是否会将他们的私人分支合并到功能中一次(并且如果他们需要做更多工作,则创建一个新的专用分支),还是安全的让他们多次合并以及他们正在进行的重组? – Ben 2010-09-29 16:46:00

+1

@让本地重新定义的想法正是为了允许多重合并:因为你永远不会发布你的'私人'分支,你可以在将你的工作合并到'features'并推送它之前重新定义它。也就是说,如果给定的开发工作在一个给定的“私人”分支上完成,最好做一个新的开发,而不是试图重用现有的开发。当地的历史会更清晰。 – VonC 2010-09-29 17:11:24

5

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

0

(我不是选项1,2或3所以我想太热衷找到一个更好的工作流程,所以我下面的描述我是如何在想,希望有人接近问题会劝我)

  1. 使用混帐补丁队列1周内的特性分支补丁队列工具。
  2. 使用单独的git存储库来版本控制修补程序队列
  3. 使用常用的git方法在修补程序队列上进行协作。

人们可能会明智地将修补程序队列返回到本地功能分支。

0

GIT中的工作流程特征分支

的过程是如下: -

第一次:

git pull 
git checkout -b sprint-4 
git pull origin sprint-4 
  • 上述命令将p所有来自git的文件

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

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

对于每一个新功能: -

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 
  • 在服务器上的这个支部创建一个远程分支。
  • 将文件从本地分支推送到远程分支。

日报:(您的特性分支)

git pull 
git merge dev 
  • 化解矛盾,如果任何
  • 做你的工作了一天

    混帐推起源

功能非常齐全:如有

git checkout dev 
git merge <feature-branch> 
git push origin dev 
  • 上述命令将在我们的功能 分支合并来自主分支文件

    git pull 
    git merge dev 
    

    化解矛盾。

  • 解决我们的功能分支中的冲突(如果有的话)。
  • 合并从功能分支到主分支的文件。
+2

你最终会遇到不可用的历史记录 – sherpya 2015-10-04 16:39:09