2017-06-20 32 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'中。合併該新創建的分支後進行拉動。 –