ホームページ  >  記事  >  開発ツール  >  git rebase とはどういう意味ですか?

git rebase とはどういう意味ですか?

青灯夜游
青灯夜游オリジナル
2021-12-29 17:04:3611559ブラウズ

git rebase とは: ブランチのリポジトリ ステータスを再定義することを意味します。リベース操作を実行するとき、git は 2 つのブランチの共通の祖先からリベースされるブランチの変更を抽出し、ブランチを次のようにリベースします。ブランチはベース ブランチの最新のコミットを指し、最後に、抽出されたばかりの変更がベース ブランチの最新のコミットの後ろに適用されます。

git rebase とはどういう意味ですか?

このチュートリアルの動作環境: Windows 7 システム、Git バージョン 2.30.0、Dell G3 コンピューター。

git rebaseはその名の通り、出発点(ベース)を再定義(再)すること、つまりブランチのリポジトリの状態を再定義することです。

1. サブミッション ノードの図

まず、単純なサブミッション ノードの図を通してリベースが何をしているのかを感じてみましょう

マスターとフィーチャーの 2 つのブランチ (フィーチャーはサブミット ポイントにあります) B マスター

からプルされたブランチには、マスター上に新しいコミット M があり、機能

git rebase とはどういう意味ですか?
上に 2 つの新しいコミット C と D があります。この時点で、機能ブランチに切り替えます。次のコマンドを実行することは、master ブランチを feature ブランチにマージすることと同じです

git checkout feature
git rebase master

//这两条命令等价于git rebase master feature

次の図は、リベース後のコミット ノード図です。その動作原理を説明します:

git rebase とはどういう意味ですか?

  • feature: 変更するベース ブランチ、現在のブランチ
  • master: ベース ブランチ、ターゲット ブランチ

正式な説明: リベース操作を実行するとき、git は2 つのブランチの共通の祖先は、リベースするブランチの変更の抽出を開始し、次にリベースするブランチをベース ブランチの最新のコミットにポイントし、最後に抽出したばかりの変更を最新のコミットの最後に適用します。ベースブランチのコミット。

例による説明: フィーチャー ブランチで git rebase master を実行すると、git はマスターとフィーチャーの共通の祖先 B、つまり 2 つのコミット C と D から始まるフィーチャー ブランチの変更を抽出します。抜粋が最初に到着します。次に、機能ブランチがマスター ブランチの最新のコミット (M) を指すようにします。最後に抽出したCとDをMに接続しますが、この処理は元のCとDを削除し、新たにC’とD’を生成するものであり、送信内容は同じですがコミットIDが異なります。当然のことながら、feature は最終的に D' を指します。

一般的な説明 (重要!) : リベース、リベースは、ベースを変更することと直接理解できます。 feature ブランチは master ブランチの B からプルされたブランチで、feature のベースは B です。また、マスターに B の後に新しいコミットがある場合、マスター上の新しいコミットを機能ブランチの新しいベースとして使用することと同じになります。実際の操作は、B 以降のフィーチャーの送信を保存し、元の送信を削除し、マスターの最新の送信の場所を見つけて、保存された送信 (新しいコミット ID を持つ新しいノード) を接続します。フィーチャーブランチはかなりYuが元のBではなくMになりました。

非常に簡単な説明もあります。rebase コマンドの鍵は、実際には「ベース」を理解することです。 git rebase は、ベース ブランチと現在のブランチの差分をコミットすることです (分岐点) ) を取得した後、「ベース ブランチ」の最新のサブミット ポイントの後で差分サブミットを 1 つずつ再サブミットし、最後に現在のブランチの HEAD ポインタが最新のサブミット ポイントを指すようにします


2. 実際の git 送信例

次の図に示すように、送信レコードは上記の図に従って構築されます: (ABM はマスター ブランチ ライン、ABCD はフィーチャー ブランチ ラインです。ここでは、マスターの色が変わり、分岐します。理解には影響しません。意味は 2 つです。ブランチごとに 2 行だけです!)

git rebase とはどういう意味ですか?
このとき、feature ブランチで git rebase master を実行します。

リベースが完了すると、ABCD は元の機能ブランチ ライン、ABMC'D' は新しい機能ブランチ ライン、ABM はマスター ブランチ ライン (変更なし)

git rebase とはどういう意味ですか?


3. 推奨される使用シナリオ

やるべきことはたくさんありますが、実はこれが最も重要なことです。企業や状況によって使用シナリオは異なりますが、ほとんどの場合、推奨事項は次のとおりです。

  • パブリック ブランチから最新のコードをプルする場合は、リベースを使用します (つまり git pull -r)。または git pull -- Rebase を使用しますが、欠点の 1 つは、リベース後、ベースが変更されているため、現在のブランチがどのブランチから最初にプルされたのかがわからないことです。 (マージを使用すると、「Merge... to...」という意味のないコミット レコードが作成されます。)

  • パブリック ブランチ上のコードをマージする場合は、マージを使用します。 (リベースを使用する場合、他の開発者がメイン ブランチの履歴を見たい場合、それは元の履歴ではなくなります。履歴はあなたによって改ざんされています。)

推奨研究: 「Git チュートリアル >>

以上がgit rebase とはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。