この記事では、Git に関する関連知識を提供します。主にリベースに関連する問題を紹介します。リベースとリベースは、ベースを変更することと直接理解できます。 feature ブランチは master ブランチの B をベースにしたブランチです。feature のベースは B です。皆さんの参考になれば幸いです。
推奨学習: 「Git 学習チュートリアル 」
この記事では、原理と使用法をすぐにマスターできるよう、最も簡単な例を使用しています。 rebase
まず、簡単な送信ノード図を通してリベースが何をしているのかを感じてください
マスターとフィーチャーの 2 つのブランチ (フィーチャーは送信からのもの)ポイント B マスターから引き出されたブランチ
マスターには新しいコミット M があり、フィーチャーには新しいコミット C と D
が 2 つあります。フィーチャー ブランチに切り替えて次のコマンドを実行します。これは、マスター ブランチをフィーチャー ブランチにマージするのと同じです (このステップのシナリオは、しばらくの間独自のブランチ機能を開発し、プルの準備を行っていたことにたとえられます)トランク マスターからの最新の変更)
git checkout featuregit rebase master //这两条命令等价于git rebase master feature
次の図は、リベース後のコミット ノード図を示しています。その動作原理を説明します:
公式の説明 (理解できない場合は、次の段落を直接読んでください) ): リベース操作を実行するとき、git は 2 つのブランチの共通の祖先から開始します。リベースするブランチの変更を抽出し、リベースするブランチをベース ブランチの最新のコミットにポイントし、最後に変更は、ベース ブランチの最新のコミットの後ろに抽出されたばかりです。
例による説明: フィーチャー ブランチで git rebase master を実行すると、git はマスターとフィーチャーの共通の祖先 B、つまり C から始まるフィーチャー ブランチの変更を抽出します。および D 2 つのコミット。最初に抽出されます。次に、機能ブランチがマスター ブランチの最新のコミット (M) を指すようにします。最後に抽出したCとDをMに接続しますが、この処理は元のCとDを削除し、新たにC’とD’を生成するものであり、送信内容は同じですがコミットIDが異なります。当然のことながら、feature は最終的に D' を指します。
一般的な説明 (重要!!) : rebase、rebase は、ベースを変更することとして直接理解できます。 feature ブランチは master ブランチの B からプルされたブランチで、feature のベースは B です。また、マスターに B の後に新しいコミットがある場合、マスター上の新しいコミットを機能ブランチの新しいベースとして使用することと同じになります。実際の操作は、B 以降のフィーチャーの送信を保存し、元の送信を削除し、マスターの最新の送信の場所を見つけて、保存された送信 (新しいコミット ID を持つ新しいノード) を接続します。機能分岐はかなりオリジナルのBではなくYuがMになりました。 (マスター上で B の後に新しいコミットがない場合、元の B が引き続きベースとして使用されることに注意してください。リベース操作は無効に相当します。この時点では、基本的に git merge と違いはありません。唯一の違いは、git merge にはもう 1 つのレコード (マージ操作送信レコード) があることです)
上記の例は、次の実際の作業シナリオに抽象化できます: Zhang San は開発のために B からコードをプルし、送信しましたこれまでに2回開発してDに開発、Li SiもBから開始してBから取り出して開発し、開発完了後Mに提出してメイントランクにマージしました。この時、Zhang San は最新のコードをプルダウンしたかったため、feature ブランチで git rebase master を実行、つまり master ブランチをリベースしましたが、Li Si が先にトランクを開発してマージしていたので、これは Zhang San に相当します。 Li Si の最新の提出物に基づいて M が開発されました。
次の図に示すように、送信レコードは上記の図に従って構築されます: (ABM はマスター ブランチ ライン、 ABCD はフィーチャー分岐線です。ここではマスターの色が変わって分岐する様子が描かれています。これは理解には影響しません。2 つの分岐と 2 つの線を意味することだけを理解してください。)
この時点では, 機能ブランチで git rebase master# を実行します。
推奨される学習: 「Git チュートリアル >>
」以上がgit学習用のリベース例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。