gitで特定のブランチの変更を取り込みたい際、コマンドの指定方法がわからず迷ってしまった経験はないでしょうか。正しい構文を把握して実行すれば、作業中のブランチに必要な更新だけを統合する状態を実現可能です。
この記事では、git pullにおいてブランチを指定する基本構文を確認する手順に加え、リモートから直接ローカルに取り込む方法まで詳しく解説します。チーム開発をスムーズに進めたいエンジニアは、ぜひ参考にしてください。
なお、git pullは取得した変更を現在チェックアウトしているローカルブランチへ統合する仕組みのため、実行前に作業ツリーの状態と対象ブランチを確かめておきましょう。ブランチを切り替えずに他のブランチを更新する方法や上流ブランチ未設定のエラーを解消する方法も併せて解説します。
目次
- git pullで特定のブランチを指定して取り込む方法
- git pullの基本的なコマンド構文を確認する
- リモートブランチを指定してローカルに取り込む
- ブランチを切り替えずにgit pullで更新する方法
- コマンドでリモートとローカルの双方を指定する
- 別のローカルブランチにリモートの変更を反映させる
- git pull時のブランチ未設定エラーを解消する方法
- エラーの原因となる上流ブランチの未設定を確認する
- コマンドを実行して上流ブランチを設定する
- git pullのブランチ指定に関するよくある質問
- git pullは内部的にどのような動作をしていますか?
- 上流ブランチを設定する-uオプションとは何ですか?
git pullで特定のブランチを指定して取り込む方法
特定のブランチを指定して変更を取り込むには、リモート名とブランチ名の正確な把握が前提です。以下に、コマンド構文の確認と指定して取り込むための操作概要をまとめました。
| 手順 | 操作内容 |
|---|---|
| 基本構文の確認 | コマンドの役割と引数の指定ルールを把握する |
| リモートブランチの指定 | リモート名とブランチ名を明記して取り込む |
まずは基本となるコマンド構文を確認し、そのうえでリモートブランチを指定して取り込む具体的な操作へ進みます。
git pullの基本的なコマンド構文を確認する
コマンドを実行して変更を統合する際、まずは基本となる構文を理解しておくことが推奨されます。ブランチを指定する場合、リモート名とブランチ名の2つを引数として渡す仕組みです。
git pull <remote> <branch>
Integrate changes from a remote repository into the current branch.
出典:Git公式ドキュメント git-pull
公式ドキュメントが「current branch」と明記しているとおり、変更の統合先は引数で渡すブランチではなく、実行時にチェックアウトしているローカルブランチです。この前提を押さえておくと、2つの引数の役割を取り違えずに済みます。
基本的な構文を構成する要素は、以下の通りです。
- コマンド本体:
git pull - リモート名:
originなどの対象リポジトリ名 - ブランチ名: 取り込みたい対象のブランチ名
これらを組み合わせることで、意図しないブランチの変更が混ざるのを防ぐ効果があります。なお、この統合先は常に現在チェックアウトしているローカルブランチであるため、実行前にgit statusで作業ツリーと現在のブランチを確認しておきましょう。
リモートブランチを指定してローカルに取り込む
構文を把握したら、実際にリモートブランチを指定して現在のローカルブランチに取り込みます。この操作により、特定の変更だけを確実に反映可能です。
具体的な操作手順を、以下にまとめました。
- ターミナルで作業中のローカルブランチに移動する
- 引数にリモート名とブランチ名を指定してコマンドを実行する
- コンフリクトが発生していないかログを確認する
例えば、リモート名がoriginで対象ブランチがfeatureの場合、実行するコマンドは以下の通りです。
git pull origin feature
エラーが発生した場合は、ローカルの変更を一時退避するか、マージ作業を手動で行う必要があります。チームの運用ルールに従って、適切に対処してください。
ブランチを切り替えずにgit pullで更新する方法
現在の作業ブランチから移動することなく、他のブランチを最新状態にする手順を解説します。作業を中断せずに更新できるため、複数の対応を並行して進めたい場面で役立ちます。
以下に、ブランチを切り替えずに更新する際の設定項目と内容をまとめました。
| 項目 | 内容 |
|---|---|
| リモートの指定 | 取得元となるリモートリポジトリの名前 |
| リモートブランチの指定 | 最新の変更を取り込みたい元のブランチ名 |
| ローカルブランチの指定 | 変更を反映させたい対象のブランチ名 |
このように取得元と反映先を明示して指定するのが、作業中ファイルへの影響を抑えたまま別のブランチだけを更新するための前提です。
コマンドでリモートとローカルの双方を指定する
git pullは、取得した変更を常に現在チェックアウトしているブランチへ統合(マージまたはリベース)するコマンドです。リモート側の取得元とローカル側の反映先をコロンで繋いで指定すると、指定したローカルブランチの参照は早送り(fast-forward)できる場合に直接更新されますが、この処理とは別に、取得した変更は通常どおり現在のブランチへも統合されるため、意図せず作業中のブランチへ変更が加わる恐れがあります。
作業中のブランチへ一切影響を与えず、他のローカルブランチだけを更新したい場合は、git pullではなくgit fetchのrefspec指定が適切な選択肢です。git fetchは現在のブランチへの統合処理を行わないコマンドのため、指定した宛先のローカルブランチだけを安全に更新できます。
具体的な指定手順について、以下のように整理しました。
- コマンドラインまたはターミナルを開く
- リモートリポジトリの名前を入力する
- リモート側のブランチ名を入力する
- コロンに続けてローカル側のブランチ名を入力して実行する
例えば、リモートのmainブランチをローカルのlocal-mainへ反映させる場合、実行するコマンドは以下の通りです。
git fetch origin main:local-main
この操作では、ローカルのlocal-mainブランチがリモートのmainブランチへ早送りできる場合のみ更新され、早送りできない場合はエラーで停止して更新は行われません。操作の完了後、指定したローカルのブランチが最新状態になっているかの確認が必要です。
別のローカルブランチにリモートの変更を反映させる
チーム開発では、自身の作業ブランチに滞在したまま、並行して進んでいるメインのブランチを更新したい場面があります。
この方法は早送りできる範囲でのみ対象ブランチを更新するコマンド(git fetch)を使うため、作業中のブランチへ意図しない変更が混ざる心配がありません。
この手法を活用する主なメリットをまとめました。
- 現在の作業内容を一時退避する手間を省ける
- ブランチを切り替える際のタイムロスを削減できる
- 作業中のコンテキストを維持したまま他の更新状況を把握できる
ただし、更新先のブランチが早送りできない状態にある場合は、コマンドがエラーで停止するため、対象ブランチへ切り替えたうえで手動でマージやリベースを行う必要があります。
git pull時のブランチ未設定エラーを解消する方法
git pullを実行した際、マージ先のブランチが未設定である旨のエラーメッセージが表示されることがあります。この問題は、ローカルブランチとリモートブランチの紐付けが正しく行われていない場合に発生する現象です。
以下の表に、エラー発生時の確認事項と対処法をまとめました。
| 項目 | 内容 |
|---|---|
| エラーの主な原因 | 上流ブランチが未設定 |
| 確認方法 | コマンドによる追跡情報の確認 |
| 対処法 | 設定コマンドを実行して紐付けを行う |
各項目の具体的な手順は、以下の通りです。
エラーの原因となる上流ブランチの未設定を確認する
git pull時にエラーが出る場合、上流ブランチが設定されていないことが主な原因です。上流ブランチとは、ローカルブランチに関連付けられた追跡先のブランチを指し、通常はリモート追跡ブランチが設定されます。
追跡状況を確認するには、以下のコマンドを実行します。
git branch -vv
実行結果に追跡先のリモートブランチ名が表示されない場合、上流ブランチが未設定の状態です。主な確認対象を、以下にまとめました。
- 現在のローカルブランチ名
- リモートリポジトリの登録状況
- 追跡先のリモートブランチの設定有無
これらが正しく紐付いていないと、gitはどこから変更を取り込めばよいか判断できない仕組みです。状況を把握した上で、適切な設定コマンドを実行します。
コマンドを実行して上流ブランチを設定する
エラーを解消するためには、リモートブランチをローカルブランチの上流ブランチとして登録することが必須です。これにより、次回以降はブランチ名を省略してgit pullを実行可能です。
既存のローカルブランチに上流ブランチを設定する場合、以下のコマンドを実行します。
git branch --set-upstream-to=origin/<ブランチ名> <ローカルブランチ名>
初めてリモートへプッシュするタイミングであれば、プッシュと同時に上流ブランチを設定することも可能です。
git push -u origin <ブランチ名>
代表的な設定方法を、以下に整理しました。
| 設定方法 | 特徴 |
|---|---|
| push時のオプション指定 | 変更を送信するついでに上流ブランチを紐付ける |
| branchコマンドの利用 | ローカルブランチに対して追跡先を直接指定する |
設定ファイルの直接編集による方法も存在しますが、記述を誤ると追跡設定が壊れる恐れがあるため、通常は上記2つのコマンドで対応すれば十分です。設定が正常に反映されれば、ブランチ未設定によるエラーを回避できます。
git pullのブランチ指定に関するよくある質問
git pullは内部的にどのような動作をしていますか?
git pullを実行すると、内部ではリモートリポジトリの最新情報を取得する処理と、現在のローカルブランチへ統合する処理が自動的に走る仕組みです。
通常はgit fetchで変更をダウンロードし、git mergeで現在の作業に結合しますが、--rebaseオプションや設定によっては、統合方法がリベースに変わる場合があります。
上流ブランチを設定する-uオプションとは何ですか?
-u(--set-upstream)はgit pushのオプションで、git pull自体にはこのオプションはありません。pushが成功したタイミングで、現在のローカルブランチと対象のリモートブランチを上流ブランチとして紐付けます。
一度git push -u origin <ブランチ名>で上流ブランチを設定すれば、次回以降はブランチ名を省略してgit pullを実行しても、自動的に同じリモートブランチから変更を取り込めます。既存のローカルブランチへ後から設定したい場合の選択肢がgit branch --set-upstream-toです。
ITやプログラミングに関するコラム
【Python】FastAPIで料金プラン見積もりシミュレーターを作ってみた
【Python】pandasとmatplotlibで在庫データのABC分析と構成比を可視化してみた
【Python】Flaskで社内FAQをカテゴリ検索できるWebアプリを作ってみた
【Python】argparseでJSON整形・構文検証・キー検索CLIを試してみた
【Python】NumPyとmatplotlibでモンテカルロ法による円周率推定と収束過程の可視化を試してみた
【Python】Playwrightでスクレイピングを試してみた
【CSS】notで複数の件を除外する方法
【Git】remote設定を変更する方法
【VBA】コメントアウトを設定する方法
x86とx64の違いを分かりやすく解説
ITやプログラミングに関するニュース
VercelがAI GatewayにSeedream 5.0 Proを追加、AI SDKのモデル指定で画像生成と編集が可能に
AWSがAmazon LocationのPlaces APIを強化、住所表記の指定と移動手段別の検索が可能に
VercelがトレースにTree・Waterfallビューを追加、ログ画面で処理の階層と所要時間を確認可能に
Googleがエージェント評価の再考を提唱、難易度を情報量で測るDiscovery Benchを解説
Google CloudがCloud Runサンドボックスを公開プレビューで提供、サービスヘルスは一般提供に
Google Cloud EMEAが英国金融の重要第三者に指定、イングランド銀行・PRA・FCAの直接監督下に
AWS DMS Schema ConversionがSQL Serverのオフライン変換に対応、ソースDBへ接続せずスキーマを変換可能に
EC2 G7インスタンスが米国東部(バージニア北部)で利用可能に、G6比でAI推論性能が最大4.6倍
SageMaker HyperPodが継続プロビジョニングでのAMIベース構成に対応、S3のスクリプト管理なしでSlurmクラスターを作成可能に
AWSがEMR on EKSでSparkトラブルシューティングエージェントに対応、失敗ジョブの原因分析を自然言語で依頼可能に
