【Git】プル(Pull)

【Git】プル(Pull)図解 P
PR
PR

プル(Pull/Git)とは、バージョン管理システムのGitにおいて、GitHubなどにある共有のリポジトリから最新の変更を受け取り、自分のパソコンの作業内容に取り込む操作のことです。ほかの人が送った変更を手元に反映させ、チーム全員が同じ最新の状態で作業を進めるために使われます。

現実世界に例えると、プルは出社したら、まず共有の棚から最新の原稿を持ってきて、自分の手元の原稿に書き写すことのようなものです。古い原稿のまま作業を始めると、仲間の修正と食い違ってしまうため、最初に最新の状態へそろえます。

プル(Pull)図解

【Git】プル(Pull)図解
※画像をクリックすると拡大表示します。

プッシュとは逆向きの操作

位置づけの話です。手元の変更をリモートへ送るのがプッシュで、リモートの変更を手元へ取り込むのがプルです。チームでの開発では、この2つを繰り返しながら、互いの変更を行き来させます。プッシュが拒否されたときに、先にプルをしてから送り直すのは、典型的な使い方です。

中では2つの操作をしている

仕組みの話です。プルは、リモートの変更を手元に持ってくる「フェッチ」と、それを今の作業に合流させる「マージ」の2つを続けて行う操作です。ひとつのコマンドで済む手軽さがある一方、合流まで自動で進むため、何が取り込まれたのかを意識しにくい面もあります。

操作 していること 手元の作業への影響
フェッチ リモートの変更を持ってくるだけ 変わらない
プル 持ってきて、今の作業に合流させる 最新の状態に変わる

先に中身を確かめたいとき

慎重に進める方法です。取り込む前に変更の内容を確かめたい場合は、プルではなくフェッチだけを行い、差分を見てから自分でマージします。大きな変更が入っていそうなときや、作業中の内容と食い違いが心配なときは、この2段階に分ける方法が安心です。

コンフリクトが起きたら

避けられない場面です。自分とほかの人が同じファイルの同じ箇所を変更していると、プルの途中で「コンフリクト(競合)」が起き、取り込みが止まります。ファイルを開いてどちらの内容を残すかを決めて直し、改めて記録すれば完了です。こまめにプルしておくほど、食い違いは小さく済みます。

作業中の変更があるとき

よくあるつまずきです。まだ記録していない変更がある状態でプルすると、取り込む内容とぶつかって、操作が止められることがあります。その場合は、作業中の変更をいったんコミットするか、一時的に退避させる機能を使ってからプルし、終わったあとで退避した変更を戻します。

リベースで取り込む方法

履歴を整える選択肢です。プルは通常マージで合流しますが、設定や指定によって「リベース」で取り込むこともできます。リベースを使うと、自分の変更がリモートの最新の変更の後ろに並び直され、余計な合流の記録が残らないため、履歴が一本の線のように見やすくなります。

作業を始める前の習慣

使い方のこつです。その日の作業を始める前や、新しいブランチを作る前に、まずプルして最新の状態にそろえておくのが基本です。古い状態のまま長く作業すると、あとで取り込むときの食い違いが大きくなり、解決に手間取ります。小さく、こまめに取り込むことが、チーム開発を円滑にします。

プルリクエストとの違い

名前が似ていて紛らわしい言葉です。プルリクエストは、自分の変更を本流に取り込んでもらうよう依頼する仕組みで、Gitのプルの操作そのものとは別物です。「自分の変更をプル(取り込み)してほしい」という依頼であることから、この名前が付けられています。

あわせて知っておきたい用語

コメント

タイトルとURLをコピーしました