git pullの概要|git pullコマンドが実行する2つのコマンド
git pull
git pullとはリモートリポジトリの内容をローカルリポジトリに反映するコマンドのことです。コマンドを実行する時は
1
|
git pull
|
と記載します。git pullについて概要を説明すると、このような説明になります。
しかし、この記事ではgit pullについての概要についての説明に留まらず、リポジトリについての説明、git pullコマンドが実行される時に実行する2つのコマンドであるgit fetchコマンドとgit mergeコマンドについて説明します。
さらには実運用のためにgit pullコマンド実行後に使うコマンドや実例についてまで説明し、開発者の方が実務に役立てるようになることを目論んだ内容の記事を書きます。
リポジトリとは
リポジトリには、リモートリポジトリとローカルリポジトリの2種類のリポジトリが存在します。リモートリポジトリとローカルリポジトリがどのようなリポジトリなのかを説明します。
リモートリポジトリとは
リモートリポジトリとはサーバ上のリポジトリであり、共用のリポジトリです。各ローカルユーザーの変更内容が、リモートリポジトリで管理されます。
ローカルリポジトリとは
ローカルリモートリポジトリとはローカルで各ユーザーが作業するリポジトリのことです。各ローカルユーザーは、ローカルリポジトリでの変更内容をリモートリポジトリに反映し、リモートリポジトリより他のユーザーの変更内容をローカルリポジトリに取得します。
ローカルリモートリポジトリはリモート追跡ブランチとローカルブランチより構成されます。リモート追跡ブランチとローカルブランチについては後述します。
git pullコマンドが実行する2つのコマンド
git pullコマンドはそれ自体に留まらず、git pullコマンドが実行される時に実行する2つのコマンドを理解しておくと、理解が正確です。
git pullコマンドが実行される時に実行する2つのコマンドであるgit fetchコマンドとgit mergeコマンドについて説明します。
git fetchコマンドとは
git fetchコマンドとは、git pullコマンドが実行される時に実行されるコマンドの1つで、リモートリポジトリの内容をローカルリポジトリのリモート追跡ブランチに反映するコマンドのことです。
リモート追跡ブランチとは、ローカルリポジトリで各ローカルユーザーが作業するブランチではなく、リモートリポジトリの内容のコピーを持つブランチのことです。
git mergeコマンドとは
git mergeコマンドとは、git fetchコマンドでリモートリポジトリの内容をリモート追跡ブランチに反映した内容を、ローカルブランチに反映するコマンドのことです。
ローカルブランチとは、ローカルリポジトリで各ローカルユーザーが作業するブランチです。各ローカルユーザーは、git mergeコマンドでローカルブランチに反映された内容に対して作業します。
git pullコマンド実行後に使うコマンド
gitを参照目的だけに使用するのであれば、リモートリポジトリの内容をローカルリポジトリに反映する操作のみを理解しておけば良いですが、開発者の方はローカルリポジトリの内容にソースを追加したり、削除したり、更新することがあると思います。
そのため、git pullコマンド実行後に使うコマンドである、git addコマンド、git rmコマンド、git commitコマンド、git pushコマンドについて説明します。
git addコマンドとは
git addコマンドとは、ローカルリポジトリでソースファイルを新規作成した時等に、ソースファイルをインデックスに追加するコマンドのことです。インデックスに追加されたファイルはローカルリポジトリに登録されるわけではないので注意が必要です。
インデックスに追加されたファイルをローカルリポジトリに登録するには、後述するgit commitコマンドを実行する必要があります。
エクスプローラー上でファイルを新規作成すれば、エクスプローラーにおいてはファイルが追加されますが、gitにおいてファイルが追加されたことを示すためにはgit addコマンドを実行する必要があります。
git rmコマンドとは
git rmコマンドとは、ローカルリポジトリでソースファイルを削除した時等に、ファイル削除したことをローカルリポジトリに反映するコマンドです。
エクスプローラー上でファイルを削除すれば、エクスプローラーにおいてはファイルが削除されますが、gitにおいてファイルが削除されたことを示すためにはgit rmコマンドを実行する必要があります。
git commitコマンドとは
git commitコマンドとは、各ローカルユーザーがローカルで作業した内容をローカルリポジトリに反映するコマンドです。
前述したgit addコマンドでインデックスに追加されたファイルもgit commitコマンド実行により、ローカルリポジトリに反映されます。git commitコマンドを実行した段階では、リモートリポジトリは更新されません。
git pushコマンドとは
git pushコマンドとは、ローカルリポジトリの内容をリモートリポジトリに反映するコマンドです。実運用ではgit commitコマンドを実行した後に、git pushコマンドを実行する流れとなります。
実例を通して考える
実例として、リモートリポジトリA、ローカルリポジトリB、ローカルリポジトリCが存在するとし、ローカルリポジトリBでは機能1及び機能2の開発が行われ、ローカルリポジトリCでは機能3及び機能4の開発が行われるとします。
ローカルリポジトリBのユーザーは、ローカルリポジトリBで機能1及び機能2に対して新規作成したファイルをgit addしたり、変更した内容をgit comiit→git pushしリモートリポジトリに反映したりします。
ローカルリポジトリCのユーザーは、ローカルリポジトリBのユーザーがgit pushした内容を、git pullしてリモートリポジトリの内容をローカルリポジトリCに反映することにより、機能1及び機能2の内容をローカルリポジトリCに取り込めます。
また、機能3及び機能4についても同様に考えられます。ローカルリポジトリCのユーザーは、ローカルリポジトリCで機能3及び機能4に対して新規作成したファイルをgit addしたり、変更した内容をgit comiit→git pushしたりします。
不要なファイルがローカルリポジトリCに存在した場合は、git rmコマンドを用いることもあります。
ローカルリポジトリBのユーザーは、ローカルリポジトリCのユーザーがgit pushした内容を、git pullしてリモートリポジトリの内容をローカルリポジトリBに反映することにより、機能3及び機能4の内容をローカルリポジトリBに取り込めます。
実例を通して応用的な問題について考える
前段落で述べた例で、ローカルリポジトリBのユーザーが機能5のファイルA内のAAAというファンクションに変更を加え、同時にローカルリポジトリCのユーザーが機能5のファイルA内のAAAというファンクションに変更を加えていたとします。
ローカルリポジトリBのユーザーが機能5のファイルAに加えた内容をリモートリポジトリAに反映した後に、ローカルリポジトリCのユーザーがファイルAをリモートリポジトリAに反映しようとするとコンフリクトという変更内容の競合現象が生じます。
コンフリクトが生じると、ローカルリポジトリCのユーザーは変更内容をリモートリポジトリAに反映できません。
ローカルリポジトリCのユーザーは、どのようにオペレーションすれば競合現象が防げたかについて記載します。
まず、ローカルリポジトリBのユーザーがリモートリポジトリAに反映した内容をgit pullし、ローカルリポジトリCに反映させた後に、機能5のファイルA内のAAAというファンクションに変更を加えると、変更内容の競合現象が防げたと言えます。
git pull記事総括
記事の内容について理解して頂けましたでしょうか?gitを操作していると何か操作に詰まることもあると思いますが、この記事は開発者の方が実務に役立てるようになることを目論んだ内容となっていますので、操作に詰まった時はもう一度この記事を読んで頂けると何かヒントが見つかるかもしれません。
FEnetを運営しているネプラス株式会社はサービス開始から10年以上
『エンジニアの生涯価値の向上』をミッションに掲げ、
多くのインフラエンジニア・ネットワークエンジニアの就業を支援してきました。
ネプラス株式会社はこんな会社です
秋葉原オフィスにはネプラス株式会社をはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
インフラ業界に特化
ネットワーク・サーバー・データベース等、ITインフラ業界に特化。Cisco Systemsプレミアパートナーをはじめ各種ベンダーのパートナー企業です。
業界を知り尽くしているからこそ大手の取引先企業、経験豊富なエンジニアに選ばれています。
-
正社員なのにフリーランスのような働き方
正社員の方でも希望を聞いたうえでプロジェクトをアサインさせていただいており、フリーランスのような働き方が可能。帰社日もありません。
プロジェクト終了後もすぐに次の案件をご紹介させていただきますのでご安心ください。
-
大手直取引の高額案件
案件のほとんどが大手SIerやエンドユーザーからの直取引のためエンジニアの皆様へに高く還元できています。
Ciscoをはじめ、Juniper、Azure、Linux、AWS等インフラに特化した常時300件以上の案件があります。
-
スキルアップ支援
不要なコストを削減し、その分エンジニアの方へのスキルアップ支援(ネットワーク機器貸出、合格時の受験費用支給など)や給与で還元しています。
受験費用例)CCNP,CCIE:6-20万円、JNCIS:3-4万円、AWS:1-3万円など
※業務に関連する一定の資格のみ。各種条件がありますので詳しくは担当者へにお尋ねください。
-
現給与を保証します!※
前職の給与保証しており、昨年度は100%の方が給与アップを実現。収入面の不安がある方でも安心して入社していただけます。
※適用にはインフラエンジニアの業務経験1年以上、等一定の条件がございます。
-
インセンティブ制度
ネットワーク機器の販売・レンタル事業等、売上に貢献いただいた方にはインセンティブをお支払いしています。
取引先企業とエンジニア側、双方にメリットがあり大変好評をいただいています。
-
社会保険・福利厚生
社員の方は、社会保険を完備。健康保険は業界内で最も評価の高い「関東ITソフトウェア健康保険組合」です。
さらに様々なサービスをお得に利用できるベネフィットステーションにも加入いただきます。
-
東証プライム上場企業グループ
ネプラスは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
ネプラス株式会社に興味を持った方へ
ネプラス株式会社では、インフラエンジニアを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
新着案件New Job
-
【高額年収】/【CCNA取得者歓迎】/ネットワークの構築/BIG-IP/東京都千代田区/【WEB面談可】/在宅ワーク/20代~30代の方活躍中
年収540万~540万円東京都千代田区(神保町駅) -
東京都中央区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/在宅ワーク
年収600万~600万円東京都中央区(小伝馬町駅) -
【高額年収】/インフラ構築支援/東京都港区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/在宅ワーク
年収960万~960万円東京都港区(新橋駅) -
ガバナンス推進、セキュリティ基盤支援/東京都港区/【WEB面談可】/在宅ワーク/20代~40代の方活躍中
年収780万~780万円東京都港区(新橋駅) -
カー用品販売会社の情報システム運用/東京都千代田区/【WEB面談可/インフラサーバ経験者/20~40代の方活躍中】/テレワーク
年収576万~576万円東京都千代田区(水道橋駅) -
ネットワーク構築、検証/東京都渋谷区/【WEB面談可】/テレワーク/20代~40代の方活躍中
年収540万~540万円東京都渋谷区(渋谷駅)
人気記事Popular Posts
-
PowerShellの文字コードについて解説!文字化けで困らないための対処法
2021-01-19 2022-04-26 -
ベンダーとはどういう意味なのか|ベンダーとつくIT用語10個
2020-10-29 2022-04-26 -
PowerShellでファイルコピーをする方法とは?PowerShellのインストール方法も紹介!
2021-03-10 2022-04-26 -
PowerShellでのOut-Fileコマンドの使い方|各オプションもご紹介
2021-03-09 2022-04-26 -
PowerShellでのWhere-Objectの使い方とは?Where-Objectを正しく理解しよう
2021-03-10 2022-04-26 -
PowerShellでの正規表現の使い方について紹介!正規表現を正しく使いこなそう!
2021-01-20 2022-04-26 -
PowerShellのスクリプトとは?スクリプトの実行方法やパラメータの指定方法を紹介!
2021-02-19 2022-04-26 -
PowerShellのStart-Processの使用方法とは? Start-Processを使いこなそう!
2021-03-02 2022-04-26 -
Windowsにおけるdirコマンドとdirコマンドのよく使うオプション
2021-05-13 2022-04-26 -
【2020年版】独学で基本情報技術者試験に合格するための参考書をご紹介
2020-09-30 2022-04-27 -
PowerShellでのGet-Contentコマンドの使い方やオプションについて解説!
2021-03-09 2022-04-26 -
エンジニアが目標設定をする8つのコツ|年数別の具体例を紹介
2020-04-20 2022-04-26