このトピックで学ぶ「クローン」について、MacとWindowsで大きく操作方法が異なります。Windowsユーザーの方は「Windowsでの操作手順」のタブから、操作手順をご確認ください。動画および「書き起こし」タブの内容はMacでの操作手順となっております。
- リポジトリ
- SourceTreeはGitHubのアカウントを登録することが可能
- アカウントに紐付いたリポジトリは一覧され、ワンクリックでクローンできる
- その際に秘密鍵を作成
- クリップボードにコピー
- GitHubに登録を行う
- Setting → SSH and GPG keys
- know_hostsの作成
- 一度CUIにてGitHubからCloneし、known_hostsファイルを作成しておく
$ git clone
- ホームディレクトリの.sshフォルダ内に4つのファイルが追加されている
- config
- SSH接続のための情報
- known_hosts
- フィンガープリント
- {ユーザー名}-GitHub
- 秘密鍵
- {ユーザー名}-GitHub.pub
- 公開鍵
- config
リモートリポジトリからローカルリポジトリへファイルをダウンロードするクローンを行います。画面を共有します。
はい、というわけで、今フォークしましたリポジトリがここにあります。megane9988のリポジトリからmeganein9988のリポジトリへフォークした状態ですね。
こちらは皆さんの名前のアカウントになっていると思います。この状態で、このリポジトリをそのままローカルの方にダウンロードしてくる、このクローンという作業を行います。
ちょっとここですね、秘密鍵の設定とか色々と大変なんで、順番に作業を行っていきましょう。
SourceTree から GitHub のアカウントを連携する
まずはSourceTreeをもとに作業を行います。SourceTreeを開いたら、ひとまず、もし何かしらウインドウが開いてるとしたら、こちらは閉じていただいて、このブックマークウィンドウを表示してください。
その中の、この右側の、この歯車マーク、歯車マークの中をクリックしてアカウントをクリックしてください。ここですね。はい、アカウントです。もしくはSourceTreeの環境設定の中からもアカウントへと到達できます。
今は、一番最初にこのアプリケーションを立ち上げる時に登録した bitbucket のアカウントが一つ入ってる状況かと思います。ここに「まずは GitHub と連携してアカウントを登録する」という事から行います。
追加のボタンをクリックします。追加ですね。追加をクリックして、そしてここのホストの部分を GitHub にします。 GitHub。認証(タイプ)は OAuth のままで結構です。そしてプロトコルは SSH のままにしておいてくださいね。アカウントの接続をクリックします。すると、ブラウザが立ち上がり、このように「Authorize SourcetreeForMac」という形で「SourceTreeとMacをつなげますよ」という風に書かれます。なのでここでクリックを押しましょう。はい、これで「もう一度SourceTreeを開きますよ」という風に言われますので、これでひとまず接続がされました。
公開鍵を作成する
はい。ここで、昔はですね、これで終わりだったんですけども、今現在…、今は2020年の12月なんですけども、この状態ではですね、Read only となってまして、プルとか、そのリポジトリを参照するとこまではできるんですが、それに対するプッシュができない状態になってますので、ここで一手間加えたいと思います。
SSHキーの作成
まずはプロトコル:SSH ということで、公開鍵を、このGitHubとの接続のために作ります。「キーを生成」をクリックします。はい。「キーを生成」をクリックして、ここで公開鍵というのを作りますね。今回ここはパスフレーズは無しで作ります。ここでパスフレーズが必要かどうかっていうのは、よりセキュリティを高めるかどうかっていう事なんですけども、その辺りはご自身にお任せします。今回、私の方では、ひとまず無しでやりたいと思います。で、「SourceTreeに SSH の設定の変更を許可をします」って言うことのチェックするのを確認して、作成を押します。はい、そしたらここにですね「meganein9988-Github.pub」っていう鍵ができたよっていうのができて「クリップボードにコピー」というのが出てきます。こちらも何のことやらさっぱり分からないと思うんですが、1回コピーしてください。コピーしましょう。これ(クリップボードにコピー)クリックしといてくださいね。そして保存をクリックします。
はい、そうするとこのように OAuth で SSH で接続ができました。ここまでアカウントが表示されれば OK です。一旦バツを押して戻ってきて、ここのリモートのタブの方に来ると、ここに GitHub という新しいタブですね、出来上がって、これまでの、今、自分で管理のあるリポジトリが一覧されます。
今はmeganein9988のアカウントでは、先ほどフォークした「mgnknowledge-learn-git」のものだけがありますので、これが一つだけ表示されています。で、このクローンを押すと、これでダウンロードできるはずなんです…が、ここがぐるぐるぐるぐる回ってずっとできないんですね。えーと、ちょっと私のやり方が間違ってるのかもしれませんが、現状、出来なかったので、これを、できる手法を発見しました。
GitHub にSSHキーを登録する
まずはここの、SourceTreeのこの URL をコピーします。あ…いや、やめよう。ちょっと待ってくださいね。そうじゃなくて、今せっかくコピーしましたから、今コピーしたのを、何かって言うと、鍵の内容をコピーしましたね。貼り付けるとこんなやつ。クリップボードにコピーって…、まずこの鍵を登録します。はい、鍵を登録します。この鍵の文字列を GitHub 上に登録します。はい。
で、 GitHub に行きます。GitHub に行ったら、ここの自分のマークのプロファイルの中の Settings。はい、Settings に来たら、ここのアプリケーションをクリックして…あ、じゃないや、 SSH & GPG Keys ですね、ここをクリックします。はい。ごめんなさいね、色々間違いで。ここに「New SSH key」なりますのでクリックしましょう。はい、そしたら、ここ(Key)に、ぴっと貼り付けます。貼り付けました。これがね、鍵の、公開鍵の内容ですね。これ(Title)はSourceTreeとかってしときましょうか。ここ、何でもいいんですけども、分かりやすいようにしときましょう。SourceTree用の鍵ですよって形で、この名前を決めて、先ほどのを貼り付けたらAdd SSH keyという風にしときます。
これで公開鍵、秘密鍵による SSH のログイン用の認証みたいなことが、 SSH 接続と言いまして、サーバーと接続する際に、こっちに持ってる鍵と向こうに登録した鍵が合うと、ちゃんとログインできますよって仕組みが SSH 接続ではよく使われるんですけども、その登録が必ず必要になります。これをまず行いました、というとこですね。まずここ大事。鍵を登録します。
known_hostsファイルを生成する
鍵を登録したら、今度はここのですね、自分のリポジトリ…プロファイルの中の、自分のフォークした方のリポジトリですね、自分のリポジトリのこの「Code」の中から、今ね、おそらくみなさんは最初 HTTPS になってると思うんで、ここ SSH をクリックします。はい。で、これをコピーします。これ。これね。コピーですね。これをコピーしておきます。
git@github.com:ユーザーアカウント/mgnknowledge-learn-git.git
このコピーの、この URL っていうのは、ここをクローンした時のここと同じはずです。ここね、この github meganein…なにがし某っていうので、ここも同じですね。GitHubの…なにがし某、という感じになってます。
一旦、CUIからクローンする
これをコピーしたら、今度は CUI 、私の場合は iTerm2 ですけども、 CUI ツールを開けます。アップデートが来てますけども、一旦今は、後で教えてね、としておきましょうか。で、ここで SSH とコマンド打っていただいて、 SSH…、あ、違うな…ごめんなさいね、あ、これでいいか。こうするとどうなる?駄目って言われるか、そうか。じゃあ git クローン、これ(先ほどコピーしたもの)、ていう風にします。もう一回やりましょうか。デスクトップとかに行って頂いた方がいいですね。
cd で、デスクトップに行って頂いて、とクローンでこれ貼り付けます。
cd Desktop
git clone git@github.com:ユーザーアカウント/mgnknowledge-learn-git.git
そうすると、今これ何がどうなったかって言いますと、コマンドラインで Git を操作したんです。で、git clone っていうことは、「この Git の向こう側からクローンして、ファイルを今、デスクトップ側にコピーしてくださいね」っていう事をしました。
そうすると、初めてこの時に鍵認証による SSH 接続が実施され、その時に必ず一番最初だけ「fingerprint」と言って、Unknown…いや、「known_hosts」ってファイルが生成されるんです。何のことやらわからないでしょ(笑)分かんないなりに良いんで、やってください。
大丈夫ですかって聞かれてます。「これを追加しますか」っていうことで、本当に接続するって聞かれてるので、そこは yes か no なので、フィンガープリント本当に作りますか?で、yes で Enter を押します。すると、これで繋がって、今 done となりました。これは、もう既にクローン成功してます。
open .
はい。オープンにすると、ここですね。「mgnknowledge-learn-git」はデスクトップに今クローンしたので、デスクトップにその内容が来ていてダウンロードできています。
で、これでいいんですけども、うんと、ちょっと意味がわからないと思うので、一旦これは無視しましょう。一旦削除していただいても結構です。もしルートディレクトリでやっちゃった場合には…あ、ホームディレクトリですね。画面立ち上がってどこでやった場合には、ホームディレクトリにその内容があるはずなので、それを一旦削除します。
今、何がしたかったかと言うと、このホームディレクトリにおいて、「.ssh」というフォルダが新たに出来ているのが分かります。そして、この中に、今ですね、合計四つのファイルが増えています。一つは config、そして known_hosts、そして meganein9988-Github と meganein9988-Github.pub っていうのがありますね。この下の二つが秘密鍵と公開鍵と呼ばれるものです。
で、秘密鍵の方が拡張子がない方で、.pub ってなってんのが公開鍵の方です。公開鍵の内容が、今、コピーされたもので…、う~ん、ややこしい~!でも、こういうものですから一旦覚えときましょ。この中身がさっきコピーしたやつですね。「クリップボードにコピーする」って言ってやったものがこれです。 GitHub 上に貼り付けたものがこれです。それと、それに伴ってもう一個あるのが、この meganein9988-Github 秘密鍵と呼ばれるものですね。
で、実際に接続する時には、接続情報をもとに接続しに行きます。そしたら向こう側に公開鍵というもの、これ(meganein9988-Github.pub)が登録されています。そして自分の中には秘密鍵があります。この二つの鍵が合うから接続できます。接続できるからこそ GitHub から Git のファイルをダウンロードできる、クローンできるという流れになります。
で、その時に1度目の接続の際にこの「fingerprint」と呼ばれる known_hosts というファイルが出来上がります。
どうやら、この生成が SourceTree だけではできないらしいんです。で、一度、この iTerm2 を使って接続を行いました。更に、この config というファイルには、この meganein9988-Github という風に書いてありますけども、要は SSH での接続する時の、接続情報が書かれています。これは SSH接続の時に、configファイルの中に書いていると簡単に SSH による接続ができる、というものなんですけども、ここも、話がややこしくなりますので、一旦は、もう、このまま「こういうものだ」という風に覚えておいてください。はい。で、ここまでの設定が終わりました。ご苦労様でした。ここね、凄く大変でした。私も悩みました。
SourceTree に戻ってクローンする
そして、これで、この状態でクローンを押すと、今度は、ここほら、ここは「これは git リポジトリです」って、今までずっとぐるぐるぐるぐるしてたのがちゃんと git のリポジトリとして認識されます。これでやっと準備が整ったということになります。
クローンする場所を指定して、クローンする
そうしましたら、これをダウンロードしたいので、クローンにしたいので、これをですね、フォルダとして、好きなとこで結構です。私はデスクトップにしますけども、新規フォルダとして、ここですねにしますが、別に「書類」の中に作っていただけでも結構ですし、また別のとこに作っていただくでも結構です。ここにダウンロードされる、クローンされるということになりまして、必ず空のフォルダーにしておきましょう。中にファイルが入ってるとややこしくなりますので、空のフォルダをどこかに作って頂いて、その中にクローンを実施してください。
はい、これでやっと、この元々の GitHub から保存するのは、デスクトップの、ローカルリポジトリーとして設定する「/Desktop/mgnknowledge-learn-git」というところで、名前を「mgnknowledge-learn-git」ということでクローンしますよ、ということになります。「高度なオプション」の中の一応ありますけども、もうそのまま、何もしなくても大丈夫です。クローンをクリックします。そうするとここにインジケーターが進みだして、ほどなく画面がぴょっと開くということになります。…ここまで来たら大成功です。皆さんも上手く出来るといいんですが、どうでしょうか。これ大変。ここね、多分ね、ひょっとしたら一番難しいかもしれませんので、頑張って下さい。
そして、ひょっとすると、ずっとこの、初めて外部のサービス GitHub を使いましたし、外部のサービスへの SSH の接続を行ったりもしましたから、もしかすると GitHub の仕様によって、このやり方で接続ができなくなる事もあるかもしれませんし、もっと言うとSourceTreeがバージョンアップされた結果、もっと簡単にクローンできるようになるかもしれません。
で、なるべく都度都度アップデートして行こうと思いますが、現時点においては、この方法が、どうやら正しかったと思いますので、こちらの方法を一手一手、作業していただければと思います。
そして、やっと終わって何が来たかと言うと、これですね。はい。先ほどまでに、これは GitHub 上でコミットされていたものがどんどんと並んでいます。なので、私がコミットしたものが皆さんのローカルのリポジトリにも降りてきているはずです。こんな感じ。
はい。で、更にデスクトップの中身を見てみると、今、デスクトップにクローンしましたからね、ここにファイルがあって、この中身を見てみるとこんな感じ。 README.md があって README.md とは別に people っていうフォルダがあって、people というフォルダの中にmegane9988.md というものがあります。
これからですね、プルリクエストをやって頂くんですけども、ここにご自身の名前のフォルダを作って、ご自身の名前のファイルを作って頂いて、それをコミットし、プルリクエストして頂くという作業を行っていただく予定です。
長くなりましたけども、えーと、クローンのところでした。難しかったかもしれません。頑張ってみてください。なるべくテキストでもサポートするように致します。
- SourceTreeでSSHキーを生成
- Pageantに秘密鍵を登録
- GitHubに公開鍵を登録
- SourceTreeからGitHubアカウントを登録
- クローン
SourceTreeでSSHキーを生成
GitHubでクローンを行う前に、SourceTreeでSSHキーを生成します。
「ツール」から「SSHキーの作成/インポート」をクリックし「PuTTY Key Generator」を表示します。
Parametersの設定が下記の通りになっているのを確認したら「Generate」をクリックします。
- Type of key to generate: RSA
- Number of bits in a generated key: 2048
「Generate」をクリックすると、緑色のプログレスバーが表示されるので、プログレスバーが終わるまでの間、Keyの空白のエリアでマウスを適当に動かしてください。
キーの生成が完了したところです。
Keyの内容については以下の通りです。
- Public key for pasting into OpenSSH authorized_keys file:公開鍵
- Key fingerprint:フィンガープリント
- Key Comment:鍵の名前
- Key passphrase:パスフレーズ
- Confirm passphrase:同上
今回、Key fingerprint と Key Comment はそのまま変更せず、Key passphrase は何も設定せずに進めます。
「Public key for pasting into OpenSSH authorized_keys file」の部分は公開鍵として GitHub に登録するので、一旦、VSCodeなどのエディターにコピペしておいてください。
Actionsの「Save private key」をクリックしてください。
すると「パスフレーズ無して保存するけど大丈夫?」的な警告が出ますが、そのまま「はい」をクリックし、「任意の名前.ppk」で、任意の場所に保存してください。
秘密鍵を保存した場所は、この後の設定で必要になるので忘れないようにしてください。
Pageantに秘密鍵を登録
SourceTreeを起動し「ツール」から「SSHエージェントの起動…」をクリックします。クリックしても何も起こりませんが、大丈夫です。次に、画面右下のタスクバーの中から、帽子を被ったPCのアイコン(Pageant)をクリックしてください。
「Pageant Key List」が表示されるので、先ほど保存した秘密鍵を選択して「Add Key」をクリックしてください。
秘密鍵の内容が表示されたら「Close」でウィンドウを閉じてください。
GitHubに公開鍵を登録
※ ここから先は、本トピックスの内容と同じです。
GitHub の「SSH & GPG Keys」から、SSHキーの生成をした時にコピーした公開鍵を「Key」に貼り付けて保存してください。
SourceTreeからGitHubアカウントを登録
SourceTreeの「+」をクリックし「New Tab」を表示したら「Remote」をクリックし、「アカウントを追加」をクリックします。
- ホスティングサービス:GitHub
- 優先するプロコトル:SSH
Hostの中の設定を上記の通り選択したら「OAuthトークンを再読み込み」をクリックしてください。
SourceTree から GitHub へアクセスを許可する画面が表示されるので「Authorize atlassian」をクリックしてください。これで GitHub のアカウントが SourceTree に追加されました。
クローン
リポジトリにアクセスし「Code」から「SSH」を選択して、表示されたコードをコピーします。SourceTree に戻り、「New Tab」の「Clone」をクリックします。
表示された画面の1つ目の欄に、先ほどコピーしたコードを貼り付け「クローン」をクリックします。
Windowsでのクローンの手順は以上となります。