cloneとはなんなのか、その再出現するリポジトリなど、概念的なものについて学びましょう。

目次

cloneとは

cloneコマンドは一言で言えばリポジトリ(ファイルやディレクトリの状態)をコピーするためのコマンドと言えるでしょう。クローンという、その名の通りですね。主にみんなで活用しているリモートリポジトリをクローンして、自分の開発用にローカルリポジトリを作るために使います。

まずは、初心者の方のためにリポジトリについて見ていきましょう。

リポジトリとは

※リポジトリがわかる人は、この項目は飛ばしてもらってかまいません。

リポジトリとは、先ほどの説明にもあった通りファイルやディレクトリの状態のことを言います。そしてみんなのファイルやディレクトリの状態が保存されている場所のことをリモートリポジトリ。

自分のファイルやディレクトリの状態保存されている場所のことをローカルリポジトリと呼びます。

画像:リポジトリの解説図

基本的にローカルリポジトリは、リモートリポジトリをコピーして作られています。この際、コピーするために使用するのが、今回学ぶcloneコマンドというわけですね!

[補足]リモートリポジトリが必要ない時!

先ほどリモートリポジトリとローカルリポジトリについて説明しました。

しかし状況によっては、リモートリポジトリがまだ存在しないケースや、そもそも作る必要がないケースもあると思います。その場合は、gitを使い始めるために、cloneではなくinitを使用することになります。その状況の方は、まずinitコマンドを学んでみてください。

cloneを実際に使ってみよう!

では早速cloneコマンドを使用してみましょう。

コマンドの基本型

git clone [クローンしたいリポジトリ] [クローン先のディレクトリ(省略可)]

第一引数へクローンしたいリポジトリを指定します。第二引数へ、クローンの配置先のディレクトリを指定します。

※また第二引数は省略可能です。省略した場合、クローンしたいリポジトリと同一の名称のディレクトリが生成されます。

通信方式と実例

cloneの基本的な使い方は理解できたかと思いますが…「クローンしたいリポジトリの書き方」に、いろいろな種類があり、混乱することが多いためその点を見てきましょう。

種類が多い理由は、「クローンしたいリポジトリ」は、だいたいサーバー上に存在するため、環境によって通信方式が関わってくるからです。それぞれ特徴とともに実例ベースで見ていきましょう。

http方式

通信速度が早い。githubなどで、よく使われる形式。

書き方:

git clone http://リポジトリのurl/プロジェクト名.git

実例:

git clone http://xxxxxx.com/xxxxxx.git

git方式

比較的高速で通信が可能な形式です。ただしこの方式を使用する場合、2つ注意点があります。

  • ①認証構造を持たない
  • ②クローンしてきたものがread-onlyになる(更新が行えない)

取得したいだけの場合には有用でしょう。

書き方:

git clone git://リポジトリのurl/プロジェクト名.git

実例:

git clone git://xxxxxx.com/xxxxxx.git

ssh方式

個人や社内のプロジェクトでよく使われるのがこの形式だと思います。秘密鍵の設定などもできますし、比較的安全な形式です。

書き方:

git clone ssh://ユーザー名@リポジトリのurl/プロジェクト名.git

実例:

git clone ssh://admin@xxxxxx.com/xxxxxx.git

使い分け方

クローンしたいリモートリポジトリの環境によって使い分けましょう。またリポートリポジトリを作成する人は、この辺りをよく考えながら、環境を構築しましょう!

cloneの応用的な使い方

ここまでで基本的な使い方は先ほど学びました。では引き続き、応用的な使い方も見ていきましょう。

タグやブランチを指定してcloneする!

cloneはブランチやタグを指定して行うことも可能です。その場合は「-b」オプションをつけましょう。

git clone -b [クローンしたいブランチ名] [クローンしたいリポジトリ] [クローン先のディレクトリ(省略可)]

リモートリポジトリの確認

リモートリポジトリがどこにあるのか知りたくなることもあると思います。その際、便利なのが以下のコマンドです。

コマンド:

git remote -v

結果:

git remote -v
origin    https://xxxxx.com/xxxxxxx (fetch)
origin    https://xxxxx.com/xxxxxxx ((push)

リモートリポジトリの場所が確認することができます!

チェックテスト

チェックテスト下記、コードにおいて、下記表示をするために必要なcssプロパティはどれかdiscordにて共有ください。

TOP