-
Notifications
You must be signed in to change notification settings - Fork 24
clone a repository
🙇 こちらのマニュアルをよりよくするためのアンケートにご協力いただけませんか? 🙇
このページでは、既にインターネット上に作成されている Github のリモートリポジトリを自分の PC へコピーする(clone
)方法について説明しています。
clone
とは 「まったく同じものをつくる」という意味の英単語です。
その意味のとおり、git clone
コマンドでは、ネットワークの向こう側にあるリモートリポジトリとまったく同じものを、ローカル環境 すなわち あなたの PC 内につくるという動作をします。
一度 git clone
でリポジトリをローカルに複製したら、あとはそのローカルリポジトリにてコードを書いたりファイルを操作したりすればいいので、git clone
は原則として一番最初にのみ行う作業ということになります。
ブラウザで、 clone したいリポジトリのトップ画面へアクセスします。 画面右下(画像内の赤い丸印の部分)に、clone する際に使う そのリポジトリの URL が記載されているので、コピーします。
URL というのは「インターネット上での場所を特定するための文字列」です。URL は 通信に使用するプロトコル(通信方式)によって 表記方法のルールが違います。(ただ、ここでコピーできる URL はどちらも "この画面で表示されているリモートリポジトリを特定するための文字列" という意味では 同じです。)
よちよち.rb では基本的に HTTPS というプロトコルを使用してもらうため、 URL 左側のプルダウンが "HTTPS" であることを確認して、URL 右側のクリップボードアイコンをクリックすると、それだけでコピーできます(Ctrl + c をしたことになる。便利!!)。
※ 既に公開鍵の設定等が済んでいて、HTTPS 以外のプロトコル(この場合はすなわち SSH)でリモートリポジトリとの通信を行いたいという場合は、URL 左側のプルダウンで "SSH" を選択すると URL が SSH 専用のものに変化するので、その状態で URL をコピーしてください。
git clone <リポジトリのURL>
ここで、 1. でコピーしてきた URL を git clone
の後に貼り付けます。
つまり、yochiyochirb の meetups リポジトリ(HTTPS を使って通信する場合)であれば、以下のように入力することになるはずです。
以上で Enter を押して実行すると、経過のメッセージが数行表示された後に clone が完了します。
下の画面のようになっていたら成功です。
ちょっと細かい話になるので ここは飛ばしていただいても大丈夫です。
Git はリモートリポジトリを上記のように clone した時点から、指定された URL の先にあるリモートリポジトリを "https://なんちゃら~~" という長い文字列のかわりに "origin(=起源、根源)"という名前で呼ぶようになります。
この origin の URL は clone の時点でリポジトリ内の設定ファイル( /.git/config の [remote "origin"]
)に書き込まれ、通信する際に参照されるのですが、ここでの表記ルールから「なんのプロトコル(通信方式)を使ってアクセスすればいいのか」を判断します。
HTTPS というプロトコルは普通のインターネット環境であれば特別なセットアップ無しですぐ使えるはずなので、この よちよち.rb でもおすすめしているのですが、SSH というプロトコルは 使用するにあたって別途必要な準備があります。そのため、SSH の準備をしていないのに SSH の URL を指定して clone してあると、その後 いざ通信しようとしたときに Git が「この PC と origin 間では SSH を使うのだな」と判断し SSH を使おうとするわけですが、通信に必要なファイル等がないためエラーとなってしまいます。
もし、「clone もうまくいったのに その後の通信でエラーになる」という場合は、まずこのパターンを疑ってください。
詳しくは、Pro Git のこちらをどうぞ。 Git - プロトコル
補足おわり。
ここまで出来たら、確認のために、clone してきたリポジトリに移動して(cd
)、中身がどうなっているか表示(ls
)してみましょう。
リモートリポジトリのトップ画面で見た状態と同じであれば、成功しています。
おめでとうございます! これで作業の準備が整いました。
リモートリポジトリへ push しない限り、ここでどれだけ変更してもリモートリポジトリへ影響は出ません。
思う存分いじり倒してみましょう。