2016-12-28 6 views
0

チームは、プロジェクトの論理的な変更ごとに別々のプルリクエスト(Bitbucket付き)を作成して、簡単にレビューおよび承認できるようにしたいと考えています。派生ブランチの並列プル要求を処理するにはどうすればよいですか?

私は分岐Aを作成した機能A、BおよびCのに

を実装する必要が

は、最初の変更を実施し、ためのプル要求作成] - > [マスターを。レビューと承認を待っている間、私は次の機能に取り組んでいます。私が作成したA.

master 
     \ 
     A 
     \ 
     B 

由来分岐Bは、今、私はまた、Bを実装し終えて検討する私のチームのために別のプルリクエストを作成したいです。もし私がそうするなら(B - >マスター)、私はAとBの両方からのコミットを示していますが、私のチームは再びAを見直すことはしません。

私は2番目のプルリクエストB - > Aを作ることができますが、BがAにマージされる前に、Aがマスターにマージされ、後で削除されると、このプルリクエストはどうなりますか?

AとBの変更を含むパラレルプル要求をどのようにすることができますか?

答えて

1

各機能のブランチを作成します。これらは、フィーチャーブランチと呼ばれます。必要な場合は、別のブランチから分岐します。 git checkout feature/1; git branch feature/2

  D - E - F [feature/3] 
     /
A - B - C [master] 
     \ 
      G - H [feature/1] 
       \ 
       I - J [feature/2] 

あなたは限りあなたはそれを明確にfeature/2feature/1に依存することにすると、同時にfeature/2feature/1を提出することができます。

私は2番目のプルリクエストB - > Aを作ることができることを知っていますが、Aがマスターにマージされ、後でBがAにマージされる前に、

feature/1が改訂されず、まだマージされている場合は、あなたがgit checkout feature/2; git rebase feature/1とその上にfeature/2をリベースする必要があります。 KとLは新しいリビジョンです。機能/ 2に

  D - E - F [feature/3] 
     /
A - B - C [master] 
     \ 
      G - H - K - L [feature/1] 
       \  \ 
       I - J I1 - J1 [feature/2] 
その後

git push --force

  D - E - F [feature/3] 
     /
A - B - C [master] 
     \ 
      G - H - K - L [feature/1] 
       \ 
       I - J [feature/2] 

はその後git checkout feature/2; git rebase feature/1後、あなたはこれを持っていると思います。リベース後に元の変更がローカルリポジトリに残っていることに注意してください。彼らは最終的にガベージコレクションされますが、間違いがあった場合は、git reflogを調べて戻すことができます。

feature/1がマージされて削除された後も同様の手順です(btw、削除するローカルブランチは残っています)。ブランチを削除するとラベルが削除されるだけで、ブランチはそこに残っています(再配置またはスクラッシュで「マージ」しない限り)。あなたはこれを持っています。

  D - E - F [feature/3] 
     /
A - B - C ------------- M [master] 
     \   /
      G - H - K - L 
         \ 
         I1 - J1 [feature/2] 

あなたはgit rebase masterでマスターにfeature/2をリベースする必要があります。

  D - E - F [feature/3] 
     /
A - B - C ------------- M [master] 
     \   /\ 
      G - H - K - L I2 - J2 [feature/2] 

そして、git push --force

同様に、feature/3がまだ検討されている場合は、をmasterにリベースし、インテグレータの仕事をより簡単にする必要があります。すべてこれは少し複雑と思われる場合は


、その後、feature/1を提出し、それが受け入れられていた後まで待ってfeature/2を提出する吸収合併。あなたはまだ最後のビット、feature/2masterにリベースする必要があります。

+0

にリベース取る枝

  • に(Gitはマスターをリベース)マスターリベースを取るそして
  • から分岐Bにリベースを取りますあなたは「提出する」という意味ですか?同時にプルリクエストを作成することを意味しますか? 「明確にする」とはどういう意味ですか?プルリクエストにコメントを追加しますか?また、GithubではなくBitbucketを使用していますが、これはおそらく問題ではありません。 – mrplow

  • +0

    はいとはい。私は長い間、Bitbucketを使用していませんが、うまくいけば、引っ張り要求をうまく取り直すことになるでしょう。ああ、私はあなたの最後の部分をカバーする答えを拡大しました。 – Schwern

    +0

    "これは少し複雑に思えますか?"確かにそうです。 :) – mrplow

    0

    したがって、ブランチがあります。

    • Bがから作成されたため、今の分岐Aから

    を別のブランチ、Bを作成し、分岐

  • ためのプルリクエストを作成し、マスターという名前のA.
  • から新しいブランチを作成します。 Aからもコミットされます。 Aがマスタブランチにマージされ、ブランチAのプル要求が閉じても、ブランチAはまだ残ります。

    • だから、最後にマスターが分岐B.
  • +0

    記述したワークフローでAをmasterにリベースする必要があるのはいつですか?私はすでにマスターからAを分けたので、とにかく早送りされるだろう、それはない? – mrplow