多くの人に共通の問題であると思われる質問があります。しかし、私は私の質問に対する答えを見つけることができません。Gitフローのワークフロー - 修正プログラムとブランチパーミッションとの競合
私はgitフローワークフローを使用しているbitbucketリポジトリを持っています(git-flowを使用していません)。しかし、私は現在、ブランチのアクセス許可を使用しているときにワークフローの問題が発生しています。私は枝master
に、書き込みアクセスで自分のリポジトリを設定している
master
develop
hotfix/...
release/...
feature/...
と:私は、次の分岐命名規則を持っていますdevelop
、プル要求のみ。他のすべてのブランチについては完全な許可が与えられます。つまり誰でもコードをプッシュできます。
私が抱えている問題は、以下の一連の操作で説明できます。
- 少し前にリリースされました。それは
origin/master
とorigin/develop
に合併した。 - 開発が続行されます。
feature
ブランチが作成され、プルリクエストによってorigin/develop
にマージされます。 - 重要なバグは、ライブコード(
origin/master
)で識別されます。 hotfix
ブランチはmaster
から作成されます。hotfix/some-hotfix
としましょう。バグが修正され、
hotfix/some-hotfix
ブランチがリポジトリにプッシュされます。我々は今もリモートブランチorigin/hotfix/some-hotfix
を持っています。この段階で、私たちは持っている:origin/develop
は、コミット(開発が進行しているかによって異なります)の数によってorigin/master
のヘッドです。origin/hotfix/some-hotfix
は、(バグを修正するためのコミットによって)マスターのヘッドです。
origin/hotfix/some-hotfix
をorigin/master
にマージするプル要求が作成されます。origin/hotfix/some-hotfix
がorigin/master
から作成されているため、これは正常に動作します。
注:プル要求は必ずしも解決しない、即ちorigin/hotfix/some-hotfix
をorigin/master
にマージされていません。
origin/develop
にorigin/hotfix/some-hotfix
をマージするプル要求が作成されます。多くの場合、これは矛盾を引き起こします。両方の支店に変更が加えられました。
origin/master
にマージされ、この分岐は私に意図されているので、私は、origin/hotfix/some-hotfix
にorigin/develop
をマージすることはできません。ファイアウォールブランチにプッシュされた変更は、マスタへの最終的なプル要求がマスターになる前に終了します。開発に加えられた変更は、マスターを破る可能性があります。
解決策の1つは、私は非常に注意深く、プルリクエストを処理する前にマスターへのプルリクエストが完了していることを確認することです。私の意見では、これは理想的ではありません。これは危険です(私が忘れてしまった場合)そしてさらなる開発を妨げます(誰もマスターが完了する前に修正プログラムからプルリクエストを出してから開発することはできません):
これは共通の問題ワークフロー。上記
- に基づいて
Questsion
は、私は間違った方法でGitの流れワークフローを解釈するのですか?
- あなたはどうしていますか?
- どうすれば問題を解決することができますか?
事前
私が正しく理解していれば、ローカルの 'hotfix/some-hotfix'をリモート' origin/hotfix/some-hotfix'にプッシュします。 。次に、リモートブランチ 'origin/hotfix/some-hotifx'をリモートブランチ' origin/master'にマージするプルリクエストを作成し、プルリクエストを承認します(マージする)。リモートブランチのorigin/masterとorigin/developから最新の変更を取ります。私は 'マスター 'を'開発する 'に合併することができます。しかし、私は「開発」を押す許可を持っていません。プルリクエストを作成する必要があります。しかし、どうすれば私のローカル支店から遠隔地の支店「起源/発展」に「発展」することができますか? –
ローカルブランチからプルリクエストを私のリモートブランチ 'origin/develop'に'開発 'する方法はありますか? –
私は、同じベースブランチを持つPRを持つ方法はないと思います。あなたができることの1つは、 '開発する'からブランチを作成し、 'master'をそのブランチにマージし、この新たに作成されたブランチでPRをマージするようにすることです。その新しく作成したブランチをマージしてからプルを取る。 –