PR

GitHub:リポジトリとは?(Repository)基本と操作方法を3分で整理

IT-Skills

「リポジトリ」とは簡単に言うと、あなたのプロジェクトのすべてが保存されている場所(プロジェクトの全てのファイルと、それらのバージョン履歴を保持)。プロジェクトのすべての資源が格納されているフォルダのようなもので、これをプロジェクト全体で共有することで各種資源を一元管理することを可能にしたGitHubの超基本概念です。

GitHub リポジトリとは わかりやすく
図1:GitHubのリポジトリとは?

リポジトリには大きく分けて以下2種類存在しており、それらの使い分けと2つの役割・連携方法(クローン・プッシュ・プル)を理解する必要があります。

項目ローカルリポジトリリモートリポジトリ
定義自分のコンピュータに保存されるリポジトリインターネット上のサーバに保存されるリポジトリ
利用者主に自分一人で使用複数の人が共同で使用
インターネット接続不要必要

このページではGitHubにおけるリポジトリとは何か?リモートリポジトリとローカルリポジトリの違いは?どのように使い分ける?といったGitHubの入門編の基礎知識を1から解説します。

関連 【初心者向け】GitHubとは?使い方を1からわかりやすく解説

スポンサーリンク

リポジトリとは?わかりやすく

リポジトリとは、プロジェクトに関連するすべてのファイルや変更履歴を保管する場所のこと。リポジトリにすべての情報が整理されているため、このリポジトリを参照することで、プログラム開発の進行状況の管理や過去のバージョンを復元したりすることができます。

ここでは分かりやすいように、日常生活の例に当てはめてリポジトリを料理本に例えて説明してみます。

ある家族がいて、一人ひとりが様々なレシピを日々開発しているようなシーンを思い浮かべてください。そのとき、彼らはそれぞれが独自のレシピを持っていて、同時に家族全員で1つの大きな料理本を共有していることとします。この共有された料理本にはお父さんが作ったレシピやお兄ちゃんが作ったレシピなど、家族全員のすべてのレシピが書かれています。

結論から言うと、この料理本がリポジトリです。さらに具体的に言うと、これはリモートリポジトリに該当します。

リモートリポジトリとは?(Remote Repository)

リモートリポジトリ(Remote Repository)は、家族全員がアクセスできる共通の料理本に相当するもの。この料理本は家のキッチンの目立つ場所に置かれていて、家族全員が利用できるようなイメージです。

お母さんが新しいデザートのレシピを思いつきそのレシピを共通の料理本に書き加えると、家族全員がそのレシピを参照することができるようになります。

ローカルリポジトリとは?(Local Repository)

一方、家族の一人ひとりは共有の料理本をベースにした新しくレシピを追加するための料理ノートも所有しています。個々のノートには、自分が考えたレシピや、試してみたいレシピの改良案などが書かれているイメージ。これがローカルリポジトリに相当します。

ローカルリポジトリ(Local Repository)は、リモートリポジトリをベースとしつつも一人ひとり少しだけ内容が変更されていて、もし美味しい料理ができた場合にはこのノートを元に共有の料理本(リモートリポジトリ)に書き込んだり、逆に他の人が考えたレシピを自分のノートに書き込んだり。

リモートリポジトリとローカルリポジトリのイメージは↓感じ。この絵が思い浮かべられればOK。

リモートリポジトリ,ローカルリポジトリ
図2:リモートリポジトリとローカルリポジトリ

Git:クローン(Clone)

ローカルリポジトリを個人の料理ノートだと説明しましたが、この料理ノートは家族全員で共有している料理本(リモートリポジトリ)と同期している必要があります。そうでないと、今「料理本」には何が書かれているのか?を把握することができません。

このときの同期操作に当たる操作を「クローン」と言います。

クローン(Clone)とは、共通の料理本(リモートリポジトリ)のコピーを作って自分の手元に置くことを指します。こうすることで、家族全員が同じ料理本を持ち、自分のペースで料理を試したり、改良したりすることができます。

正式に説明すると、クローン(Clone)とはリモートリポジトリをコピーしてローカルリポジトリに反映させることを指す用語。クローン操作を行うことで、プロジェクトの全貌を把握したり、インターネット接続がない環境でも作業を進めることができたりすることが初めて可能になります。

プッシュ(Push) & プル(Pull)

先ほど「お母さんが新しいデザートのレシピを思いついたので、このレシピを家族全員の料理本に書き加える」という例を出しました(実際の現場で言えば、Aさんが開発したプログラムをプロジェクト全体で共有しているプログラムに加えるということです)。

ここで必要となる知識が「プッシュ」と「プル」の操作です。

  1. プッシュ(Push): 自分の料理ノートから、共通の料理本に新しいレシピや変更を反映させること。
    • : 母親が自分のノートに書いた新しいパスタのレシピを共通の料理本に追加する。
  2. プル(Pull): 共通の料理本に新しいレシピや変更があった場合、それを自分の料理ノートに取り込むこと。
    • 例:母親が新しいデザートのレシピを共通の料理本に追加したので、菜々子はそのレシピを自分のノートに書き写します。

正式に説明するとプッシュは、ローカルリポジトリの変更をリモートリポジトリに反映させる操作。プッシュすることで、あなたのコンピュータ上で行った変更を、リモートリポジトリに保存してチームメンバーと共有することができるようになります。

プルはその逆で、リモートリポジトリの最新の変更をローカルリポジトリに取り込む操作のこと。プルすることで、チームメンバーがリモートリポジトリに追加した新しい変更を、自分のコンピュータ上で確認し、作業を続けることができるようになるということ。

Git,プッシュとプル
図2:プッシュとプル

まとめると、リモートリポジトリは家族全員が共有する料理本、クローンはその料理本のコピーを自分の手元に作成する操作、ローカルリポジトリはそのコピーの内容を記録するノートです。プッシュプルを使うことで、個々の変更を共有しながら、家族全員が常に最新のレシピを持つことができる、ということですね。

このように考えると決して難しくはありません。ここからは実際にリポジトリの作成やクローン・プッシュ/プルなどの行い方をご説明していきます。

リポジトリの作成~クローン、プル、プッシュの操作まで

Gitリポジトリの作成からクローン、プル、プッシュの操作を1から順を追って解説します。

前提条件

  • Gitがインストールされていること
  • GitHubアカウントがあること

ステップ1:GitHubでリモートリポジトリを作成

まずはGitHubにログインします。ログインした後、画面の右上にある「+」アイコンをクリック→「New repository」を選択します。これで新しいリポジトリを作成する画面が開きます。

リポジトリ名を任意で(例: my-first-repo)入力し、「Create repository」ボタンをクリックします。この操作を行うことで、インターネット上にリポジトリを作成し他のメンバーと共同で作業を行うための場所を確保することができます。

先ほどの例でいうと、家族全員で共有する料理本を作成したということですね。

ステップ2:ローカルリポジトリを作成してクローン

次に、ターミナル(もしくはコマンドプロンプト)を開きます。自分が作業したいディレクトリ(=ローカルリポジトリを作成したいディレクトリ)に移動するために以下のコマンドを実行してください。

cd path/to/your/directory

ここで、GitHubのリポジトリページで「Code」ボタンをクリックしてリモートリポジトリのURLを取得します。このURLを使って、以下のコマンドでリモートリポジトリをローカルにクローンします。

git clone https://github.com/username/my-first-repo.git

上記のコマンドを実行することで、リモートリポジトリの完全なコピーが自分のコンピュータ上に作成されます。この結果、リモートリポジトリの内容をコピーしたローカルリポジトリ内でプログラムの改修作業などができるようにします。

共有された料理本をコピーして料理ノートを作成したということです。これで、自分が好きなようにレシピを書き込んだりするノートが出来上がりました。

続いて実際にローカルリポジトリ内で様々な操作を行うため、このクローンされたリポジトリのディレクトリに移動します。

cd my-first-repo

ステップ3:ファイルの追加とコミット

ローカルリポジトリで作業を開始するために、新しいファイルを作成してみましょう。以下のコマンドで「hello.txt」というファイルを作成し、その中に「Hello, World!」というテキストを追加しておきます。

echo "Hello, World!" > hello.txt

次に、このファイルをステージングエリアに追加するために、以下のコマンドを実行します。この操作はファイルの変更をコミット(確定)する準備をするためのステップです。

git add hello.txt

続いて、以下のコマンドを実行して、変更をローカルリポジトリにコミットします。コミットとは、変更内容をリポジトリに記録する操作です。これにより変更の履歴が保存され、後から参照できるようになります。

git commit -m "Add hello.txt with greeting"

ザックリいえば、新しいレシピをノートに書き込むのがコミットです。

ステップ4:ローカルの変更をリモートリポジトリにプッシュ

ローカルリポジトリで行った変更をリモートリポジトリに反映させるために、以下のコマンドを実行してプッシュします。

git push origin main

この操作により、ローカルでの変更がリモートリポジトリに送信され、他のチームメンバーと共有されます。origin はリモートリポジトリの名前で、main はブランチの名前です。

この操作で、自分のノートの内容を家族全員で共有する料理本に書き込んだことになります。

ステップ5:リモートリポジトリの変更をプル

別の場所で作業を続けるために、他のディレクトリに移動します。

cd ..

次に、リモートリポジトリを再度クローンして新しいディレクトリで作業を開始します。

git clone https://github.com/username/my-first-repo.git
cd my-first-repo

これにより、リモートリポジトリの最新の状態がローカルリポジトリに反映されます。プルを行うことで、他のメンバーの変更も取り込むことができます。

つまり、先ほどお母さんによって変更された料理本の内容を、今度はお父さんが自分の料理ノートに書き込む、ということに相当します。

ステップ6:変更をリモートリポジトリにプッシュ

今度はもう一度、新しい変更を加え、リモートリポジトリにプッシュしてみましょう。以下のコマンドを実行して、ファイルに新しい行を追加しコミットします。

echo "Another line" >> hello.txt

git add hello.txt
git commit -m "Add another line to hello.txt"

最後に、変更をリモートリポジトリにプッシュします。こうすることで、ローカルで行った変更をリモートリポジトリに反映させることができるようになります。

git push origin main

お母さんの作ったレシピをもとに、お父さんはさらに改良を加えて家族全員へ共有した、ということと同一です。

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
IT-Skills
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました