GitとGitHubを使い始めると、最初につまずきやすいのが、
「GitHubにあるファイルと、自分のPCにあるファイルはどういう関係なのか」
という点です。
GitHubの画面でリポジトリを作っただけでは、そのファイルを自分のPC上で編集できる状態にはなっていません。
そこで使うのが、
git clone
です。
今回はGitHub上のリポジトリをPCへ取得し、VS Codeで編集できる状態にするところまで進めます。
add、commit、pushの前に、まず「どこで作業しているのか」を理解しておきます。
GitHub上のリポジトリとPC上のリポジトリ
Gitを使うときには、大きく2つの場所があります。
| 場所 | 呼び方 | 役割 |
|---|---|---|
| 自分のPC | ローカルリポジトリ | 実際に編集・記録する場所 |
| GitHub | リモートリポジトリ | ネット上で共有・保管する場所 |
イメージすると、
自分のPC
ローカルリポジトリ
↑ ↓
GitHub
リモートリポジトリ
という関係です。
普段のプログラム編集は、基本的にPC側で行います。
GitHubのファイルを直接編集し続けるのではなく、
- GitHubからPCへ取得する
- PCで編集する
- Gitで変更を記録する
- GitHubへ反映する
という流れになります。
cloneとは何か
cloneは、GitHubなどにある既存のGitリポジトリを自分のPCへ複製する操作です。
基本形は次のとおりです。
git clone https://github.com/USER/REPOSITORY.git
たとえば、
git clone https://github.com/example/sample-project.git
と実行すると、現在いるフォルダの中に、
sample-project
というフォルダが作成されます。
ただファイルをコピーしているだけではありません。
Gitの履歴やブランチなど、Gitリポジトリとして必要な情報も一緒に取得されます。
ZIPダウンロードとcloneは違う
GitHubには「Download ZIP」もあります。
しかし、Gitを使って開発するならcloneを使う方が基本です。
ZIPでダウンロードすると、主に現在のファイルを取得します。
一方でgit cloneでは、
ファイル
+
コミット履歴
+
ブランチ情報
+
リモートとの接続情報
を含んだGitリポジトリとして取得できます。
つまり、
ZIP
= ファイルを取得する
clone
= Gitの作業環境を取得する
と考えると分かりやすくなります。
実際にcloneする
まずGitHubで対象リポジトリを開きます。
画面上部の「Code」からHTTPSのURLをコピーします。
例:
https://github.com/USER/REPOSITORY.git
次にターミナルを開きます。
リポジトリを置きたい親フォルダへ移動します。
Windowsなら、たとえば、
cd C:\Users\USER\projects
のように移動します。
現在位置を確認したら、
git clone https://github.com/USER/REPOSITORY.git
を実行します。
成功すると、
projects
└─ REPOSITORY
のようにフォルダが作成されます。
cloneしたリポジトリへ移動する
続いて、
cd REPOSITORY
で作成されたフォルダへ移動します。
ここで重要なのは、
Gitコマンドは基本的に対象リポジトリの中で実行する
ということです。
たとえば、
git status
を実行します。
正常なら、現在のブランチや変更状態が表示されます。
例:
On branch main
nothing to commit, working tree clean
これは、
現在のブランチ:main
変更されたファイル:なし
という状態です。
VS Codeで開く
VS Codeを使っている場合は、リポジトリのフォルダ内で、
code .
を実行すると、そのフォルダをVS Codeで開けます。
GitHub
↓ clone
PC
↓
repository folder
↓
VS Code
ここまでできれば、GitHub上のプロジェクトを自分のPCで編集する準備は完了です。
originとは何か
cloneしたあと、
git remote -v
を実行してみます。
たとえば、
origin https://github.com/USER/REPOSITORY.git (fetch)
origin https://github.com/USER/REPOSITORY.git (push)
のように表示されます。
ここに出てくるoriginは非常に重要です。
originは、
このローカルリポジトリから見た、元のリモートリポジトリにつけられた名前
です。
つまり、
origin
↓
https://github.com/USER/REPOSITORY.git
という対応関係があります。
originという名前自体がGitHubを意味するわけではありません。
リモートリポジトリにつけられた名前です。
ただし、git cloneした場合は通常、取得元のリモートがoriginとして登録されます。
mainとは何か
もう一つ頻繁に出てくるのが、
main
です。
mainは多くのリポジトリで中心となるブランチ名として使われます。
確認するには、
git branch --show-current
を実行します。
結果が、
main
なら、現在mainブランチ上にいるという意味です。
この段階では、
origin
= GitHub側のリポジトリとの接続先
main
= 現在扱っている中心ブランチ
程度に理解しておけば十分です。
ブランチそのものは後で詳しく扱います。
cloneすると何が自動設定されるのか
通常のgit cloneでは、かなり多くの設定が自動的に行われます。
概念的には、
GitHub repository
↓
git clone
↓
ローカルrepository作成
↓
ファイル取得
↓
履歴取得
↓
remote設定
↓
origin設定
↓
作業用branchをcheckout
という処理が行われます。
そのため、clone後すぐにGitリポジトリとして作業を始められます。
まず確認したい3つのコマンド
cloneした直後は、次の3つを確認すると現在の状態を把握しやすくなります。
現在の状態
git status
接続先
git remote -v
現在のブランチ
git branch --show-current
まとめると、
git status
→ 今どうなっているか
git remote -v
→ どのリモートにつながっているか
git branch --show-current
→ どのブランチにいるか
です。
この3つは、今後Git操作で迷ったときにも役立ちます。
「どこにある変更なのか」を意識する
Gitを理解するときは、コマンドそのものよりも、
今見ているものがどこに存在しているのか
を意識すると理解しやすくなります。
clone直後は、
GitHub
│
│ git clone
↓
PC
┌────────────────┐
│ ローカルrepository │
└────────────────┘
という状態です。
ここからファイルを編集すると、変更はまずPC上にだけ存在します。
まだGitHubには反映されません。
この、
PCでは変更済み
GitHubでは未変更
という状態をGitで管理していきます。
そのための操作が、次の記事で扱う、
git add
git commit
git push
です。
cloneとpullの違い
cloneとpullも混同しやすい操作です。
clone
git clone URL
まだPC上に存在しないリポジトリを、最初に取得するときに使います。
pull
git pull
すでにPC上にあるリポジトリへ、リモート側の新しい変更を取得するときに使います。
つまり、
初回
GitHub → PC
git clone
2回目以降
GitHub → 既存のPC repository
git pull
という違いです。
よくある勘違い
GitHubのリポジトリ=PCのフォルダではない
GitHubとPCは別の場所です。
cloneすることで両者の対応関係を持ったローカルリポジトリを作ります。
clone後にファイルを編集してもGitHubは変わらない
PCでファイルを保存しただけではGitHubには反映されません。
変更をGitHubへ反映するには、さらにGitの操作が必要です。
originはGitHubそのものではない
originはリモートリポジトリにつけられた名前です。
一般的なcloneでは取得元がoriginになります。
cloneは単なるコピーではない
Gitの履歴やリモート設定も含んだ、Gitリポジトリとして複製されます。
覚えておくこと
今回覚える内容は多くありません。
最低限、次の5つで十分です。
| 用語・コマンド | 意味 |
|---|---|
| local repository | 自分のPC上のGitリポジトリ |
| remote repository | GitHubなどにあるリポジトリ |
git clone | リポジトリをPCへ複製する |
origin | リモートリポジトリにつけられる代表的な名前 |
main | 中心となるブランチによく使われる名前 |
そして状態確認として、
git status
git remote -v
git branch --show-current
を使えるようにしておきます。
実習
GitHub上にある既存リポジトリを1つ使って、次の操作を行います。
cd C:\Users\USER\projects
git clone https://github.com/USER/REPOSITORY.git
cd REPOSITORY
git status
git remote -v
git branch --show-current
code .
次の状態になればこの記事の内容は完了です。
- GitHubのリポジトリをPCへcloneできた
- cloneされたフォルダへ移動できた
git statusが正常に実行できたoriginのURLを確認できた- 現在のブランチを確認できた
- VS Codeでリポジトリを開けた
まとめ
GitHubを使った開発では、
GitHub
= リモートリポジトリ
自分のPC
= ローカルリポジトリ
という2つの場所を意識することが重要です。
既存のGitHubリポジトリから作業を始めるときは、
git clone URL
でPCへ取得します。
clone後は、
git status
git remote -v
git branch --show-current
を確認すると、現在の状態が分かります。
ここまで理解できれば、GitHub上のプロジェクトを自分のPCで扱う準備は完了です。
次は、ファイルを実際に変更し、
変更
↓
add
↓
commit
↓
push
↓
GitHub
というGitの基本操作へ進みます。

