ホームページ  >  記事  >  git rebase を使用して Git のブランチをマージする方法

git rebase を使用して Git のブランチをマージする方法

anonymity
anonymityオリジナル
2019-04-27 15:20:237893ブラウズ

リベースとは何ですか? rebaseコマンドの使い方は? git rebaseコマンドの使い方を勉強しましょう。

Git のさまざまなブランチからの変更を統合するには、マージとリベースという 2 つの主な方法があることがわかっています。実際、git rebase と git merge は同じことを行います。どちらも、あるブランチから別のブランチに変更をマージするように設計されていますが、方法が若干異なります。

マージ コマンドの例

git checkout feature
git merge master

このようにして、機能ブランチの新しいマージ コミットは 2 つのブランチの履歴を結び付けます

マージ良い点は、安全な操作であることです。既存のブランチは変更されません

feature ブランチは、上流の変更がマージされるたびに外部マージ コミットを導入します。上流ブランチが非常にアクティブな場合、多かれ少なかれブランチ履歴が汚染されます

Rebase コマンドの例

git checkout feature
git rebase master

フィーチャー ブランチ全体をマスター ブランチに移動しますその後、master ブランチ上のすべての新しいコミットが効果的にマージされます。

ただし、rebase は元のブランチ上のコミットごとに新しいコミットを作成し、プロジェクト履歴を書き換えますが、マージはしません。

2 つのブランチをリベースする場合、生成された「リプレイ」をターゲット ブランチに適用する必要はなく、別のブランチを指定して適用することもできます。機能ブランチ サーバーを作成し、サーバーにいくつかの機能を追加し、C3 と C4 を送信しました。次に、C3 から機能ブランチ クライアントを作成し、クライアントにいくつかの機能を追加して、C8 と C9 を送信しました。最後に、サーバー ブランチに戻り、C10 を再度コミットします。

git rebase を使用して Git のブランチをマージする方法

クライアントの変更をメイン ブランチにマージして公開したいが、当面はサーバーの変更をマージしたくないとします。なぜなら、それらはまだより包括的にテストする必要があるからです。現時点では、 git rebase コマンドの --onto オプションを使用して、クライアント ブランチにあるがサーバー ブランチ (つまり、C8 と C9) にはない変更を選択し、マスター ブランチでそれらを再生できます。

$ git rebase --onto master server client

上記のコマンドは、「クライアント ブランチを取り出し、クライアント ブランチとサーバー ブランチの共通の祖先以降の変更を見つけて、マスター ブランチでそれらを再生します。」を意味します。これを理解するのは少し複雑ですが、エフェクトは非常にクールです。

git rebase を使用して Git のブランチをマージする方法

これで、マージ マスター ブランチを早送りできるようになりました。

$ git checkout master
$ git merge client

git rebase を使用して Git のブランチをマージする方法

次に、変更をサーバー ブランチに統合することにします。 git rebase [basebranch] [topicbranch] コマンドを使用して、機能ブランチ (つまり、この例ではサーバー) をターゲット ブランチ (つまり、マスター) に直接リベースします。これにより、最初にサーバー ブランチに切り替えてから、そのブランチ上で rebase コマンドを実行するという複数の手順が省略されます。

interesting-rebase-4 (1).png

$ git rebase master server

開発におけるリベースの使用シナリオ

リベースはチームの Git ワークフローに多かれ少なかれ適用できます

ローカル クリーンアップ

対話型リベースを時々実行すると、機能ブランチ内のすべてのコミットが焦点を絞った意味のあるものであることを確認できます。コードを記述するときに孤立したコミットが作成されることを心配する必要はありません。後で間違いなく修正できるためです。

次のコマンドは、最新の 3 つのコミットを対話的にリベースします。

git checkout feature
git rebase -i HEAD~3

実際には、ブランチは移動されません。次の 3 つのコミットをマージするだけです。

インタラクティブ リベースは、ローカル ブランチにのみ影響するため、ワークフローに git rebase を導入する優れた方法です。他の開発者は、あなたが行った結果のみを見ることができます。これは、非常に整然とした追跡しやすいブランチ履歴です。

ただし、繰り返しになりますが、これはプライベート ブランチでのみ使用できます。同じ機能ブランチで他の開発者と作業する場合、ブランチはパブリックになり、履歴を書き換えることはできません。

以上がgit rebase を使用して Git のブランチをマージする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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