プル(Pull/Git)とは、バージョン管理システムのGitにおいて、GitHubなどにある共有のリポジトリから最新の変更を受け取り、自分のパソコンの作業内容に取り込む操作のことです。ほかの人が送った変更を手元に反映させ、チーム全員が同じ最新の状態で作業を進めるために使われます。
現実世界に例えると、プルは出社したら、まず共有の棚から最新の原稿を持ってきて、自分の手元の原稿に書き写すことのようなものです。古い原稿のまま作業を始めると、仲間の修正と食い違ってしまうため、最初に最新の状態へそろえます。
プル(Pull)図解
プッシュとは逆向きの操作
位置づけの話です。手元の変更をリモートへ送るのがプッシュで、リモートの変更を手元へ取り込むのがプルです。チームでの開発では、この2つを繰り返しながら、互いの変更を行き来させます。プッシュが拒否されたときに、先にプルをしてから送り直すのは、典型的な使い方です。
中では2つの操作をしている
仕組みの話です。プルは、リモートの変更を手元に持ってくる「フェッチ」と、それを今の作業に合流させる「マージ」の2つを続けて行う操作です。ひとつのコマンドで済む手軽さがある一方、合流まで自動で進むため、何が取り込まれたのかを意識しにくい面もあります。
| 操作 | していること | 手元の作業への影響 |
|---|---|---|
| フェッチ | リモートの変更を持ってくるだけ | 変わらない |
| プル | 持ってきて、今の作業に合流させる | 最新の状態に変わる |
先に中身を確かめたいとき
慎重に進める方法です。取り込む前に変更の内容を確かめたい場合は、プルではなくフェッチだけを行い、差分を見てから自分でマージします。大きな変更が入っていそうなときや、作業中の内容と食い違いが心配なときは、この2段階に分ける方法が安心です。
コンフリクトが起きたら
避けられない場面です。自分とほかの人が同じファイルの同じ箇所を変更していると、プルの途中で「コンフリクト(競合)」が起き、取り込みが止まります。ファイルを開いてどちらの内容を残すかを決めて直し、改めて記録すれば完了です。こまめにプルしておくほど、食い違いは小さく済みます。
作業中の変更があるとき
よくあるつまずきです。まだ記録していない変更がある状態でプルすると、取り込む内容とぶつかって、操作が止められることがあります。その場合は、作業中の変更をいったんコミットするか、一時的に退避させる機能を使ってからプルし、終わったあとで退避した変更を戻します。
リベースで取り込む方法
履歴を整える選択肢です。プルは通常マージで合流しますが、設定や指定によって「リベース」で取り込むこともできます。リベースを使うと、自分の変更がリモートの最新の変更の後ろに並び直され、余計な合流の記録が残らないため、履歴が一本の線のように見やすくなります。
作業を始める前の習慣
使い方のこつです。その日の作業を始める前や、新しいブランチを作る前に、まずプルして最新の状態にそろえておくのが基本です。古い状態のまま長く作業すると、あとで取り込むときの食い違いが大きくなり、解決に手間取ります。小さく、こまめに取り込むことが、チーム開発を円滑にします。
プルリクエストとの違い
名前が似ていて紛らわしい言葉です。プルリクエストは、自分の変更を本流に取り込んでもらうよう依頼する仕組みで、Gitのプルの操作そのものとは別物です。「自分の変更をプル(取り込み)してほしい」という依頼であることから、この名前が付けられています。
あわせて知っておきたい用語
- プッシュ(PUSH):
手元で記録した変更を、リモートリポジトリへ送る操作です。 - マージ(MERGE):
別々のブランチの変更を、ひとつにまとめる操作です。 - リベース(REBASE):
変更の記録を、別の地点の上に付け替える操作です。 - プルリクエスト(PULL REQUEST):
変更を取り込んでもらうよう、確認を依頼する仕組みです。



コメント