2017-06-20 59 views
0

我有一个感觉好像是很多人的共同问题的问题。但是,我无法找到我的问题的任何答案。Git的工作流程流 - 与分行的权限冲突的修补程序

我正在使用GIT中流动的工作流(未用git流)一到位桶库。但是,使用分支权限时,我目前遇到了一些工作流问题。我有以下分支命名约定:

  • master
  • develop
  • hotfix/...
  • release/...
  • feature/...

我已经配置我的写访问资源库,对分支机构masterdevelop,只有通过拉请求。对于所有其他分支机构提供完全许可,即任何人都可以向他们推送代码。

我的问题可以通过以下动作序列来解释。

  1. 一个释放做了一个前一阵子。它合并为origin/masterorigin/develop
  2. 继续开发; feature通过拉取请求创建分支并将其合并到origin/develop
  3. 实时代码(origin/master)中确定了一个严重的错误。
  4. 一个hotfix分支,从master创建,让我们称之为hotfix/some-hotfix
  5. bug是固定的,并且hotfix/some-hotfix分支被推到存储库。我们现在也有一个远程分支origin/hotfix/some-hotfix。在这个阶段,我们有:

    • origin/developorigin/master头由若干提交的(取决于开发进展如何)。
    • origin/hotfix/some-hotfix是主人的头(通过修正错误的承诺)。
  6. pull请求被创建以合并成origin/hotfix/some-hotfixorigin/master。这将工作正常,因为origin/hotfix/some-hotfixorigin/master创建。

注:拉入请求并不一定解决,即origin/hotfix/some-hotfix没有合并到origin/master

  1. 创建拉取请求以将origin/hotfix/some-hotfix合并为origin/develop。这在很多情况下会导致冲突;已经对两个分支进行了改变。

我无法合并origin/developorigin/hotfix/some-hotfix,因为这个部门是为了我合并为origin/master。在完成最终拉取请求之前,任何推送到修补程序分支的更改都将在主服务器中结束。为开发所做的更改可能会破坏主人。

一种解决方案是,我可以非常小心,确保任何引入请求掌握开始处理引入请求开发之前完成。在我看来,这并不理想。这是冒险的(如果我忘记了)并且阻碍了进一步的开发(没有人可以开始在完成master之前完成hotfix的开发请求):

我觉得这会是一个常见问题流程。

Questsion

基于上述

  1. 难道我解释的方式是错误的混帐流工作流程?
  2. 你们是怎么做到的?
  3. 我该如何解决这个问题,或者完全避免它?

在此先感谢

回答

0

不,你没有解释以错误的方式的工作流程。

我认为我们可以有这样的hotfix/some-hotfix分公司在主合并。在此之后,我们可以在主分支合并为origin/develop得到master分支的最新代码到它,或者我们可以用master重订的origin/develop分支。我认为合并会更好。合并/重新构造master

+0

后,您必须解决develop分支中的冲突好吧,如果我理解正确,我会将本地'hotfix/some-hotfix'推送到远程'origin/hotfix/some-hotfix' 。然后,我将创建一个合并远程分支“origin/hotfix/some-hotifx”到远程分支“origin/master”的pull请求,批准pull请求(合并它)。我从远程分支'origin/master'和'origin/develop'提取最新的更改。然后我可以将'master'合并到'develop'中。但是,我没有权限推动'develop'。我必须创建一个拉请求。但是,我怎么能从我的本地分支'develop'进入我的远程分支'origin/develop'? –

+0

有没有办法让我的本地分支'develop'进入我的远程分支'origin/develop'的请求? –

+0

我不认为有一种方法可以使用相同的基本分支进行公关。你可以做的一件事是从'develop'创建一个分支,将'master'合并到该分支中,并使用这个新创建的分支将PR合并到'develop'中。合并该新创建的分支后进行拉动。 –