2017-02-24 13 views
0

私たちはTFSを使用していて、最近(最近1ヶ月以内に)Git VCに切り替えました。私たちにはポリシーがあり、手動でマスターブランチにマージすることはできません。その代わりに、プルリクエストが承認された場合にのみマージを許可するポリシーを備えたプルリクエストがあります。Gitとチームエクスプローラで複数レベルの分岐深さとプルリクエストによるマージ

私は次のシナリオに遭遇しました:master

  • からローカルブランチBranchAを作成し

    1. BranchAに開発を完了は、BranchAからmaster
    2. 作成したローカルブランチBranchBにプルリクエストの相対を開設しましたBranchBはコードを使用していますBranchA
    3. で開発完了は、BranchA

    私はプル要求の概念を持っていないのGitを理解するために、プルリクエストを相対的に開かれ、厳密一緒に本当の懸念を提起していない枝をマージし、話します。つまり:BranchAmasterにマージに

    BranchBBranchBmasterにマージやっと同じくらい結構です合併し、その後、BranchAは私がするとき、プルマージを実行するためにクリーンな方法を見分けるのに苦労していmaster

    にマージリクエストが含まれています。私がやったことです:残念ながらmaster

  • BranchAをマージBranchAためBranchB

  • BranchAへの完全なプルリクエストをマージ BranchBため

    1. 完全プル要求、このアプローチはBranchA年代を引き起こしましたプル要求をBranchBから最新の変更で更新する必要があります。これにより、プル要求が肥大化し、元のインテントが削除されます。

      BranchBがその存在に依存しているため、BranchAプルリクエストが完了したので、私はリモートブランチが削除されないようにする必要があります(これは前提です。物理的な分岐?)。私はmasterからBranchBのプル要求の相対を行った場合masterはまだBranchAを知らないため

      は、その後、プル要求は、両方BranchABranchBの変更が含まれます。

      私はプルリクエストを膨らませることなくこのシナリオを処理する方法に関するアドバイスを探しています。

    +0

    2番目のシナリオでブランチを削除することはできますが、ブランチは特定のコミットのあまり「ラベル」ではありません。これらのコミットを依然として参照している他のコミットが存在する限り、それらは失われません。 BranchBがマスターを開始できるように、マージプロセスをどのように高速化できますか? – jessehouwing

    +0

    ああ、それは非常に良い点であり、私が覚えておくべき重要なことです。ブランチはラベルに過ぎず、コミットは本当のことです。その場合、順序は関係ありません。「BranchA」が最初にマージできます。マージを高速化するということは、チームの他のメンバーがコードのレビューと承認を完了することです(マージポリシーはマージが発生する前に2人の承認者が必要です)。理想的には、これらのプル要求は短命ですが、必ずしもそうであるとは限りません。また、私は典型的には 'BranchA'の引き出し要求を開いた直後に' BranchB'で開発を開始する準備ができています – Sam

    答えて

    0

    pull requestは、fetchであり、それに続くmergeである。そして、あなたがコメントブランチで言うように、ちょうどラベルです、コミットは本当のことです。

    2つの分岐でプルリクエストをマージすることができます。たとえば、masterを基準にしてBranchBからプルリクエストを直接作成します。プル要求が受け入れられた後。リモートリポジトリのBranchA支店にお住まいの地域BranchAブランチをBranchBgit checkout BranchA、git mergeを(またはあなたがmergeしようとしているコミット)し、次にgit push:今、あなたは、単にあなたの地元のレポでこれを行うことができBranchAでそれをマージします。

    関連する問題