Git のリモートリポジトリブランチから変更をプルするときにローカルブランチをリベースする

Azhar Bashir Khan 2022年2月6日
Git のリモートリポジトリブランチから変更をプルするときにローカルブランチをリベースする

このチュートリアルでは、Git のリモートリポジトリブランチから変更をプルするときにローカルブランチのリベースを紹介します。

バージョン管理システムである Git を使用して、ファイルに加えられた変更を追跡します。ローカルリポジトリのローカルブランチで変更をコミットします。このローカルブランチは、リモートリポジトリのリモートブランチに関連付けられています。

時々、リモートリポジトリの変更をローカルリポジトリに存在する変更と同期します。リモートブランチからローカルブランチに変更をプルします。

リモートブランチの変更をプルすると、ローカルブランチをリベースして(つまり)、公開された変更の上に未公開の変更を再適用できます。

これを例を挙げて説明します。

git pull --rebase を使用して、Git のリモートリポジトリブランチからプルするときにローカルブランチをリベースする

共同開発環境では、Git を使用してローカルシステムのローカルリポジトリにブランチを作成します。このローカルブランチをリモートリポジトリ内のリモートブランチに関連付けます。

ローカルブランチのファイルに加えられた変更をステージングしてコミットします。次に、これらの変更をリモートリポジトリのリモートブランチに公開します。

次に、同じリポジトリで作業しているチームの他のメンバーが、システムのローカルブランチで公開された変更をプルします。

したがって、定期的に、ローカルの変更をリモートリポジトリにプッシュし、公開された変更をリモートリポジトリからプルするこのプロセスを実行します。

リモートブランチの公開された変更をローカルブランチにプルする場合、マージを実行するか、リベースを実行するかを選択できます。

マージの場合、デフォルトのオプションであるコマンド git pull --merge を使用します。マージの場合にリモートリポジトリの変更をプルすると、ローカルの変更がリモートの変更とマージされます。

マージコミットは、最新のローカルおよびリモートコミットを指すように作成されます。

リベースの場合は、コマンド git pull --rebase を使用します。リベースでは、ローカルブランチの未公開のローカル変更が、リモートリポジトリの公開済みの変更に加えて再適用されます。

リベースの場合、新しいコミットは作成されません。

ローカルリポジトリに feature という名前のブランチがあり、リモートリポジトリに同じ名前のリモートブランチが関連付けられているとします。

チームの各開発者は、ローカルシステムに feature ローカルブランチを持ちます。

1 人の開発者がローカルブランチ feature にいくつかの変更をコミットしたとします。

ここで、他の開発者がリモートリポジトリのリモートブランチ feature にいくつかの変更を公開したとします。

したがって、ブランチの状況は次の図のようになります。

              P---Q---R feature (local branch)
             /
A---B---C---D---E---G feature (remote branch)

上の図に示されているように、これで分岐した履歴ができました。公開された変更を取得するには、リモートブランチからローカルブランチに変更をプルする必要があります。

リモートブランチ feature の新しいコミットがローカルブランチのコミットに関連していると仮定します(通常はそうです)。したがって、この場合、プルを実行するときは、マージの代わりにリベースを実行します。

リベースを実行するには、--rebase オプションを指定して git pull コマンドを実行する必要があります。コマンドの構文は、git pull --rebase <remote-repository> <remote-branch-name> です。

したがって、この場合、ローカルブランチの feature をリベースするには、次のようにします。

$ git pull --rebase origin feature

したがって、上記の git pull コマンドを実行すると、ブランチは次の図のようになります。

                      P---Q---R feature (local branch)
                     /
A---B---C---D---E---G feature (remote branch)

したがって、図に示すように、ローカルブランチ feature のすべての未公開コミットは、リモートブランチ feature の変更の先端に移動されます。新しいコミットは作成されません。

リベースオプションの主な利点は、プロジェクト履歴がマージオプションよりもはるかにクリーンであることです。

また、上の図に示すように、線形のプロジェクト履歴が得られます。フォークはありません。git log コマンドを使用して、プロジェクトの履歴を簡単に閲覧できます。

したがって、Git のリモートリポジトリから変更をプルするときにローカルブランチをリベースすることについて詳しく説明しました。

詳細については、以下をご覧ください。

  1. git-pull
  2. マージとリベース

関連記事 - Git Pull

関連記事 - Git Rebase