cloneとは?他人のGitHubリポジトリを自分のPCにコピーする方法
これまでの記事で、自分のPC(ローカル)で作成したプロジェクトを、GitHub上のリポジトリにアップロード(push)する方法をマスターしました。これであなたは、自分のコードをGitHubで管理する基本を身につけたことになります。
今回のテーマは、その逆のパターン、つまりGitHub上にある他の人のリポジトリ(プロジェクト)を、自分のPCに丸ごとコピーしてくる方法です。この操作を「clone(クローン)」と呼びます。世界中の優れたオープンソースプロジェクトを利用したり、チーム開発に参加したりするための、まさに最初の第一歩となる重要なコマンドです。早速、やり方を学んでいきましょう!
`git clone`とは?単なるダウンロードとの違い
GitHubのリポジトリページには、緑色の「Code」ボタンから「Download ZIP」という選択肢もあります。「ファイルをコピーするだけなら、これで十分じゃないの?」と思うかもしれません。しかし、`git clone`とZIPダウンロードは、似ているようで全く異なるものです。
- ZIPダウンロード: その瞬間のプロジェクトファイル一式を、ただのファイルとしてダウンロードするだけです。過去の変更履歴(コミットログ)などが含まれる`.git`ディレクトリは含まれません。つまり、バージョン管理の恩恵は受けられません。
- git clone: プロジェクトの全ファイルに加えて、これまでの変更履歴(すべてのコミット)も丸ごとコピーしてきます。これにより、あなたのPC上に、完全に機能する新たなローカルリポジトリが作成されます。すぐに変更履歴を遡ったり、新しい変更をコミットしたりできます。
例えるなら、ZIPダウンロードは「本の最終ページのコピーだけをもらう」ようなもの。対して`git clone`は、「新品の同じ本をまるごと一冊手に入れる」ようなもの、と考えると分かりやすいでしょう。
`git clone`の実践手順
では、実際に`git clone`コマンドを使って、GitHub上のリポジトリをあなたのPCにコピーしてみましょう。
ステップ1: クローンしたいリポジトリのURLをコピーする
まず、コピーしたいプロジェクトのGitHubページにアクセスします。今回は例として、有名なCSSフレームワークである「Bootstrap」のリポジトリをクローンしてみましょう。
ページを開いたら、緑色の「Code」ボタンをクリックします。すると、URLをコピーするためのいくつかの選択肢が表示されます。HTTPSとSSHがありますが、前回SSHキーの設定を行ったので、SSHのURLを使うのが便利です。SSHを使うと、pushやpullの際にパスワードの入力を省略できます。
[画像:BootstrapのGitHubリポジトリで「Code」ボタンを押し、SSHのURLをコピーしている様子]
URLの右側にあるコピーアイコンをクリックして、URLをクリップボードにコピーしましょう。
ステップ2: ターミナルで`git clone`コマンドを実行する
次に、ターミナル(WindowsならGit Bash)を開き、プロジェクトを保存したい場所に移動します。デスクトップや、`projects`のような開発用フォルダなどが良いでしょう。
移動したら、いよいよ`git clone`コマンドの出番です。以下のように、コマンドに続けて先ほどコピーしたURLを貼り付けて実行します。
git clone [ここにコピーしたSSHのURLを貼り付け]
Bootstrapのリポジトリをクローンする場合、具体的なコマンドは以下のようになります。
git clone git@github.com:twbs/bootstrap.git
実行すると、ダウンロードが開始されます。リポジトリのサイズによっては少し時間がかかることもあります。
ステップ3: クローンされたことを確認する
コマンドの実行が完了すると、カレントディレクトリにリポジトリ名と同じ名前のフォルダ(この場合は`bootstrap`)が作成されているはずです。確認してみましょう。
ls
`bootstrap`というフォルダが見つかったら、その中に移動します。
cd bootstrap
これで、あなたのPCにBootstrapの完全なリポジトリが用意できました。このフォルダは、`git init`などを実行する必要はなく、すでにGitの管理下にあります。
クローンした後の最初のステップ
リポジトリをクローンしたら、すぐにそのプロジェクトで作業を始めることができます。作業を始める前によく使われるコマンドをいくつか紹介します。
ブランチを確認する
どのような作業ブランチがあるかを確認するには、`git branch`コマンドを使います。`-a`オプションを付けると、リモートリポジトリのブランチも見ることができます。
git branch -a
最新の変更を取得する
クローンしたリポジトリが、あなたが作業している間にも他の人によって更新されることがあります。作業を始める前には、必ず`git pull`コマンドを実行して、リモートリポジトリの最新の状態をローカルリポジトリに反映させるようにしましょう。
git pull
注意点:貢献したい場合は「Fork」から始めよう
ここで一つ重要な概念をご紹介します。あなたが書き込み権限を持っていない他人のリポジトリに対して、直接変更をpushすることはできません。もし、そのプロジェクトに機能追加やバグ修正などの「貢献」をしたい場合は、まず「Fork(フォーク)」という操作を行います。
Forkとは、他人のリポジトリを、自分のGitHubアカウント上に丸ごとコピーして、自分専用のリモートリポジトリを作成する機能です。
オープンソースプロジェクトに貢献する際の基本的な流れは以下のようになります。
- 貢献したいプロジェクトを、GitHub上でForkする。
- Forkして自分のアカウントに作成されたリポジトリを、PCにcloneする。
- 自分のPCでコードを修正し、自分のリモートリポジトリにpushする。
- GitHub上で、自分のリポジトリから元のプロジェクトへ「Pull Request」を送り、変更内容を取り込んでもらうよう依頼する。
まずは`clone`に慣れ、次のステップとしてぜひForkからのプルリクエストにも挑戦してみてください。