2017-06-20 9 views
0

多くの人に共通の問題であると思われる質問があります。しかし、私は私の質問に対する答えを見つけることができません。Gitフローのワークフロー - 修正プログラムとブランチパーミッションとの競合

私はgitフローワークフローを使用しているbitbucketリポジトリを持っています(git-flowを使用していません)。しかし、私は現在、ブランチのアクセス許可を使用しているときにワークフローの問題が発生しています。私は枝masterに、書き込みアクセスで自分のリポジトリを設定している

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

と:私は、次の分岐命名規則を持っていますdevelop、プル要求のみ。他のすべてのブランチについては完全な許可が与えられます。つまり誰でもコードをプッシュできます。

私が抱えている問題は、以下の一連の操作で説明できます。

  1. 少し前にリリースされました。それはorigin/masterorigin/developに合併した。
  2. 開発が続行されます。 featureブランチが作成され、プルリクエストによってorigin/developにマージされます。
  3. 重要なバグは、ライブコード(origin/master)で識別されます。
  4. hotfixブランチはmasterから作成されます。hotfix/some-hotfixとしましょう。
  5. バグが修正され、hotfix/some-hotfixブランチがリポジトリにプッシュされます。我々は今もリモートブランチorigin/hotfix/some-hotfixを持っています。この段階で、私たちは持っている:

    • origin/developは、コミット(開発が進行しているかによって異なります)の数によってorigin/masterのヘッドです。
    • origin/hotfix/some-hotfixは、(バグを修正するためのコミットによって)マスターのヘッドです。
  6. origin/hotfix/some-hotfixorigin/masterにマージするプル要求が作成されます。 origin/hotfix/some-hotfixorigin/masterから作成されているため、これは正常に動作します。

注:プル要求は必ずしも解決しない、即ちorigin/hotfix/some-hotfixorigin/masterにマージされていません。

  1. origin/developorigin/hotfix/some-hotfixをマージするプル要求が作成されます。多くの場合、これは矛盾を引き起こします。両方の支店に変更が加えられました。

origin/masterにマージされ、この分岐は私に意図されているので、私は、origin/hotfix/some-hotfixorigin/developをマージすることはできません。ファイアウォールブランチにプッシュされた変更は、マスタへの最終的なプル要求がマスターになる前に終了します。開発に加えられた変更は、マスターを破る可能性があります。

解決策の1つは、私は非常に注意深く、プルリクエストを処理する前にマスターへのプルリクエストが完了していることを確認することです。私の意見では、これは理想的ではありません。これは危険です(私が忘れてしまった場合)そしてさらなる開発を妨げます(誰もマスターが完了する前に修正プログラムからプルリクエストを出してから開発することはできません):

これは共通の問題ワークフロー。上記

  1. に基づいて

    Questsion

    は、私は間違った方法でGitの流れワークフローを解釈するのですか?

  2. あなたはどうしていますか?
  3. どうすれば問題を解決することができますか?

事前

答えて

0

のおかげではありません、あなたは間違った方法でワークフローを解釈されていません。

このhotfix/some-hotfixブランチをマスターにマージすることができます。その後、マスターブランチをorigin/developにマージして、最新のコードmasterをブランチに入れるか、masterでブランチorigin/developをリベースすることができます。私はマージする方が良いと思います。 master

+0

私が正しく理解していれば、ローカルの 'hotfix/some-hotfix'をリモート' origin/hotfix/some-hotfix'にプッシュします。 。次に、リモートブランチ 'origin/hotfix/some-hotifx'をリモートブランチ' origin/master'にマージするプルリクエストを作成し、プルリクエストを承認します(マージする)。リモートブランチのorigin/masterとorigin/developから最新の変更を取ります。私は 'マスター 'を'開発する 'に合併することができます。しかし、私は「開発」を押す許可を持っていません。プルリクエストを作成する必要があります。しかし、どうすれば私のローカル支店から遠隔地の支店「起源/発展」に「発展」することができますか? –

+0

ローカルブランチからプルリクエストを私のリモートブランチ 'origin/develop'に'開発 'する方法はありますか? –

+0

私は、同じベースブランチを持つPRを持つ方法はないと思います。あなたができることの1つは、 '開発する'からブランチを作成し、 'master'をそのブランチにマージし、この新たに作成されたブランチでPRをマージするようにすることです。その新しく作成したブランチをマージしてからプルを取る。 –

関連する問題