GITはSCM方法論の実装というよりもSCMフレームワークの実装であるため、実際には3番目の可能性があります。この3番目の可能性はに基づいていrebase
ます。
rebase
GITサブコマンドは、(一般的に、あなたの分岐点から、あなたのトピックブランチの先端にコミットする一連の取りtopic
)と(例えば、一般的に、統合ブランチの先端にどこかにそれらを再生しますmaster
)。このrebase
サブコマンドは、新しいコミットを生成します。これにより、確認しやすい形式でコミットを再配置することができます。これにより、topic
以前と同様の新しい一連のコミットが生成されますが、統合ブランチの最上部に根付いているように見えます。この新しいブランチはまだtopic
GITによって呼び出されるため、古い参照は破棄されます。topic-0
ブランチの元の状態などを非公式にラベル付けtopic-1
し、さまざまなリファクタリングを行います。
あなたのtopic
ブランチに対する私の提案は次のとおりです。
(オプションステップ)あなたが対話的にあなたのトピックブランチをリベースtopic
その分岐点に(参照--fixup
のためのオプションcommit
と-i
して--autosquash
のオプションをrebase
あなたのレビューが容易である方法であなたのコミットを書き換えるための機会を与えます、)。これにより、ブランチが作成されtopic-1
ます。
統合ブランチの最上部でトピックブランチをリベースします。これはマージを行うのと似ていますが、単なるソフトウェアエンジニアリングアーティファクトであるマージで履歴を「汚染しません」。これにより、ブランチが作成されtopic-2
ます。
topic-2
の先端に対してそれをレビューするチームメイトに送信しますmaster
。
よければtopic-2
、それをマスターにマージします。
NOTE枝- 枝が木になるすべてのため、プロセスの最後に、唯一の支店は、GITによって同じと呼ばれるコミットを指しtopic-2
GITに名前を持っています。
長所:
- 廃止されたコードはレビューされていません。
- 偽の「外部マージ」レビュー(1日で説明した現象)はありません。
- クリーンな方法でコミットを書き換える機会。
短所:
- 1つのブランチの代わりに、
topic-0
3つのブランチアーティファクトtopic-0
が topic-1
ありtopic-2
、それらはコミットツリーに作成されます。(ただし、GITで名前を持っているのはいつでも1つだけです)。
最初のシナリオでは、«誰かが「1」の間に何かをマージした場合 「2.」»は、分岐点の作成からマージを決定するまでの時間を指します。このシナリオでは、«誰かが「1」の間に何かをマージした場合 「2.」»は、リベースからマージまでの時間を指し、通常は非常に短い時間です。したがって、私が提供するシナリオでは、master
ワークフローを大幅に乱すことなく、マージの時間の間ブランチを「ロック」できますが、最初のシナリオでは実用的ではありません。
体系的なコードレビューを行っている場合は、適切な方法でコミットを再配置することをお勧めします(オプションのステップ)。
中間ブランチアーティファクトを管理するのは、リポジトリ間でそれらを共有する場合にのみ困難です。