プルとは?
プルは、GitHubなどのリモートリポジトリから新しい変更を取得し、現在のローカルブランチへ取り込む操作です。ほかの人や別のパソコンで進んだ履歴を、自分の作業環境へ反映します。
Git公式ドキュメントでは、プルは最初にフェッチで変更を取得し、そのあと現在のブランチへ統合する処理と説明されています。単なるファイルのダウンロードではありません。
フェッチとの違い
- フェッチ:リモートの新しい履歴を取得し、状況を確認できるようにする
- プル:取得した変更を現在のブランチへ統合する
いきなり作業中のブランチへ変更を入れたくない場合は、先にフェッチして差分を確認します。GitHub Desktopの「Fetch origin」と「Pull origin」が分かれているのはこのためです。
クローンとの違い
クローンは、まだ手元にないリポジトリを一式取得して作業場所を作る操作です。プルは、すでにクローン済みのローカルリポジトリを更新する操作です。
通常は最初に一度クローンし、以後は必要に応じてプルします。
プル前に作業状態を確認する
未コミットの変更がある状態でプルすると、変更が重なって処理を止められる場合があります。まずgit statusやGitクライアントの画面を確認し、作業をコミットまたは一時退避してから取り込みます。
同じ部分が別々に変更されていると、マージコンフリクトが発生します。どちらを残すかは人が内容を読んで判断する必要があります。
「作業を始める前に必ずプルする」という覚え方は分かりやすい一方、違うブランチで実行すると意図しない変更を取り込むことがあります。現在のブランチ、未コミットの変更、取り込み元を確認してから実行します。
自動処理やAIへプルを頼む場合も、「最新にして」だけでなく、どのリモートのどのブランチを、どのローカルブランチへ取り込むかを確認すると事故を減らせます。