リモート Git リポジトリ | git pull

git pull コマンド

中央リポジトリからの変更をローカルリポジトリへマージする作業は、Git ベースの共同作業ワークフローでよく行われる。git fetch に続けて git merge を実行する方法はすでに説明したが、git pull はこの 2 つのコマンドをまとめて実行するショートカットである。

使い方

git pull <remote>

現在のブランチについて、指定したリモートからコピーを fetch し、それを現在のブランチへすぐにマージする。これは git fetch <remote> を実行した後、git merge origin/<current-branch> を実行するのと同じである。

git pull --rebase <remote>

上のコマンドと似ているが、リモートブランチを現在のブランチへ統合するときに git rebase を使う。

補足説明

git pull は SVN の svn update に相当すると考えられる。このコマンドは、ローカルリポジトリを中央リポジトリと同期するための便利な方法である。

Git チュートリアル: git pull

最初はローカルリポジトリが origin と同期していたとする。git fetch を実行した結果、origin/master が最後に確認した時点から進んでいることがわかる。ここで git merge を実行すると、リモートの master がローカルの master へマージされる。

rebase を使った pull

--rebase フラグは、履歴の線形性を保ち、マージコミットを減らしたい場合に使う。rebase は「自分の変更作業はすべて、完了済みの最新変更を基準にしたい」という操作に相当し、多くの開発者は merge より rebase を選ぶ傾向がある。この意味で、単純な git pull よりも --rebase フラグを付けた git pull の方が、SVN の svn update に近いといえる。

実際に --rebase フラグを指定した pull は非常に一般的なワークフローであるため、そのための設定コマンドが用意されている。

git config --global branch.autosetuprebase always

このコマンドを実行すると、以後のすべての git pull は統合時に git merge ではなく git rebase を使う。

使用例

次は、中央リポジトリの master ブランチと同期する方法を示している。

git checkout master
git pull --rebase origin

このコマンドを実行すると、他の開発者の作業成果がすべて反映された上に、ローカル変更が配置される。