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 のリモートリポジトリから変更をプルするときにローカルブランチをリベースすることについて詳しく説明しました。
詳細については、以下をご覧ください。
関連記事 - Git Pull
- Git Merge Origin/Master と Git Pull の違い
- Git Pull と Git Pull Origin Master の違い
- Git で特定のフォルダーをプルする
- Git プル VS マージ
- Git プルのオリジン ブランチがマスター ブランチを上書きする
- Git プルを元に戻す