クローンのコマンドは理解したけど、なぜかうまくいかなくて困ってる…なんてことありませんか?
実はクローンの不具合は案外簡単に解決するのですが、知らないと時間を無駄にしてしまってもったいないですよね。
この記事では、クローンの基本操作から方式による違い、うまくクローンできないときの対処法について詳しく説明していきます。
クローンの基礎をしっかり理解すれば、失敗せずスムーズなクローン作業ができるはずですよ♪
クローンとは
クローンとは、リモートリポジトリをそのまま自分のローカル環境(自分のPC上)へ複製(コピー)する機能です。
何らかの変更を加えてプッシュする場合は、複製元に直に反映されます。
クローンとフォークの違い
リポジトリの複製には「フォーク」という機能もあります。
フォークとは、他人のリモートリポジトリを、自分のリモートリポジトリに複製する機能です。同じ複製行為ですが、コピー元やコピー先に違いがある、ということですね。
自分のリモートリポジトリへフォークしたものは、自分のローカル環境へクローンすることで開発を進められます。
フォーク→クローンした内容は、開発を進めても元のリポジトリに影響を与えることなく、内容の変更を加えることができます。
通信方式の違い(https方式、git方式、ssh方式)
クローンの通信方式(プロトコル)はhttps、git、sshの3つがあります。
それぞれの特徴を見ていきましょう。
https方式
通信速度が早く、ファイアウォールにブロックされることがないため、GitHubで推奨されている方式です。
プッシュするたびにユーザー名とパスワードの入力が求められますが、パスワード管理システムを使えば初めてのプッシュのときのみでOK。
git方式
通信速度は早いですが、中身を確認できるだけで更新はできません。
また、認証機能がなく、セキュリティが担保されないので注意です。
ssh方式
通信が暗号化されていて、公開鍵と秘密鍵を使い分けることで安全に運用することができます。
暗号化されている通信を利用することで、安全に運用することができます。
SSHの仕組みについて詳しく知りたい方は、こちらをチェックしてみてください。
リモートリポジトリのクローン方法解説
どの方式でも基本のコマンドは
$ git clone <リポジトリのアドレス> <ディレクトリ名>
になります。
クローン方式によって<リポジトリのアドレス>が異なりますが、この後解説していきます。
<ディレクトリ名>には
- 既存のディレクトリ名
- 新しいディレクトリ名
どちらを指定してもいいです。新しいディレクトリ名を入れれば、新規ディレクトリを作成した上で、クローンしてくれます。
コマンド”mkdir”などで、別途ディレクトリを作成しなくても良いということですね。
それでは各方式のクローン方法を見ていきましょう。
https方式
こちらのコマンドを使います。
$ git clone https://github.com/<ユーザー名>/<リポジトリ名>.git <ディレクトリ>
このhttpsから始まるURLは、GitHubリポジトリページのこの部分からコピーできます。
“HTTPS”が選択されていることを確認してください。
git方式
先述の通り、読み込み専用の方式です。
コマンドはこちら。
$ git clone git://github.com/<ユーザー名>/<リポジトリ名>.git <ディレクトリ>
https方式で使用するURLの冒頭をgitに変更すればOKです。
ssh方式
クローンのコマンドはこちらを使用します。
$ git clone git@github.com:<ユーザー名>/<リポジトリ名>.git <ディレクトリ>
URLは”Code”をクリック→”SSH”に切り替えてコピーすることができます。
ディレクトリを指定せずにクローン
クローンコマンドの最後に記述するディレクトリ名は省略することができます。
その場合、今いるディレクトリに、リポジトリ名と同名のディレクトリが作成されます。
たとえば、”clone”というディレクトリに移動した状態(cloneというフォルダの中)で、ディレクトリを指定せずに”test”というリポジトリをクローンすると、
$ git clone https://github.com/pepepengin/test.git
このようなコマンド結果が表示され、
”clone”というディレクトリの中に、“test”という名前でリポジトリがクローンされます。
状況に応じて使い分けると良いでしょう。
特定のブランチを指定してクローンする方法
特定のブランチをクローンしたい場合は、次のコマンドを使います。
$ git clone -b <ブランチ名> <リポジトリのアドレス> <ディレクトリ名(省略可)>
たとえば、”test”リポジトリの”develop”というブランチをクローンしたい場合、
$ git clone -b develop https://github.com/pepepengin/test.git
となります。
https方式でご紹介しましたが、git方式・ssh方式でも同様です。
クローンができない場合
どの方式においても、まずはリポジトリのアドレスが正しいかを確認しましょう。
また、ssh方式でクローンできない問題が発生した場合は、SSHキーが設定されているかチェックしてみてください。
アカウント設定画面の「SSH and GPG keys」から「SSH keys」の欄を確認し、”There are no SSH keys associated with your account.”とあれば登録が必要になります。
まずは次のコマンドで、公開鍵を取得しましょう。
$ cd ~/.ssh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
ここまで実行すると、id_rsa(秘密鍵)とid_rsa.pub(公開鍵)が作られます。
下3行のEnter…で鍵の名前や、パスフレーズの入力が求められますが、入力せずにエンターキーを押しても問題ありません。
ここで公開鍵をコピーしておきます。
$ pbcopy < ~/.ssh/id_rsa.pub (Macの場合)
$ clip < ~/.ssh/id_rsa.pub (Windowsの場合)
続いて、先程のアカウント設定から「SSH keys」の「New SSH key」をクリックします。
“Title”に公開鍵の名前、”Key”にコピーしておいた公開鍵を貼り付けて、”Add SSH key”をクリック。
これで設定完了です。
まとめ
クローンのコマンドから、クローン方式の特徴・使い方の違いについてご紹介しました。
不具合の対処法については、そんなこと?と思われた方もいるかもしれませんが、実は筆者は学習始めた頃はsshの仕組みをよく理解しておらず、躓いた記憶があります…
兎にも角にも、これでクローンの基礎はバッチリです!今後のGitHubの利用にお役立てくださいね♪
今回ご紹介したクローンの方法は、こちらの記事で作成したリポジトリを使用して解説しています。リポジトリの作成や運用方法について紹介してますので、参考にしてみてください!
とはいえやっぱり難しそう…と思う初学者の方がほとんどだと思います。Gitはコマンド操作で解説している記事が多いため、まずはGUI(マウス操作)で扱うところから始めてみるのはどうでしょうか?
GitHub DesktopはGit公式の無料ツールで、OSやエディタ問わず扱えるためオススメです!
コードエディタがVScodeの方は拡張機能で対応することも可能です!
操作に慣れてきた方はこちらの記事を参考にして静的ページをWeb上に公開してみるなど、色々と試してみるとGitの面白さが分かるかも!