各機能のブランチを作成します。これらは、フィーチャーブランチと呼ばれます。必要な場合は、別のブランチから分岐します。 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/2
がfeature/1
に依存することにすると、同時にfeature/2
とfeature/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/2
をmaster
にリベースする必要があります。
にリベース取る枝
はいとはい。私は長い間、Bitbucketを使用していませんが、うまくいけば、引っ張り要求をうまく取り直すことになるでしょう。ああ、私はあなたの最後の部分をカバーする答えを拡大しました。 – Schwern
"これは少し複雑に思えますか?"確かにそうです。 :) – mrplow