Gitクローンとは?git cloneコマンドの基本から応用テクニックまで徹底解説
git cloneコマンドは、リモートリポジトリのコピーをローカルマシン上に作成するためのコマンドです。デフォルトでは、cloneコマンドはリポジトリと同じ名前のフォルダにコードを保存します。クローン元リポジトリのURLの後にフォルダ名を指定することで、この挙動を変更することも可能です。
Gitバージョン管理システムにおいて、別の場所に保存されているリポジトリのローカルコピーを作成することは、最も重要な操作の一つです。
git cloneコマンドを使えば、どこかに保存されているリポジトリのローカルコピー(「クローン」とも呼ばれます)を作成できます。
このチュートリアルでは、git cloneコマンドの基礎を解説します。ローカルおよびリモートリポジトリのクローン方法や、ベアリポジトリのクローン方法についても取り上げます。
git cloneコマンドとは?
git cloneコマンドは、既存のリポジトリのコピーを、ローカルコンピュータ上の作業ディレクトリに作成します。
クローンはGitの中核的な機能です。クローンを使うことで、メインのバージョンから独立したコードのコピーを作成できるためです。このコピーはローカルマシン上で自由に実行・編集でき、メインバージョンのコードには一切影響を与えません。
つまり、準備が整うまでリポジトリ本体に変更を加える必要はありません。変更が完了したら、コードをリモートリポジトリにプッシュして保存できます。あるいはプルリクエストを作成し、他の開発者に自分の書いたコードをレビューしてもらうことも可能です。
Gitでリポジトリをセットアップする方法は2つあります。git cloneコマンドで既存のリポジトリをクローンするか、git initコマンドで新しいリポジトリを作成するかのどちらかです。
リポジトリのクローン作成は、通常一度だけ行う作業です。一度クローンしてしまえば、Gitリポジトリで作業するために必要なすべてのコードがローカルマシン上に揃います。
さらに、git cloneコマンドはリポジトリに関連付けられたすべてのメタデータも一緒にクローンします。リポジトリをクローンすれば、プロジェクトの全履歴の記録が手に入ります。プロジェクトに関連付けられたすべてのGitブランチも同時にクローンされます。
git cloneの基本的な使い方
git cloneコマンドは、既存のリポジトリのクローンをローカルマシン上の新しいディレクトリに作成します。リポジトリをローカルマシンにクローンすると、リポジトリのコードが保存される新しい環境が生成されます。
実際にgit cloneコマンドを使ってリポジトリをクローンする例を見てみましょう。ここでは、GitHub上のリポジトリをローカルマシンにクローンしたいとします。
次のようなコマンドライン操作でプロジェクトをクローンできます:
git clone https://github.com/username/project-name.git cd project-name
最初のコマンドは、指定したGitHubのURLに保存されているリポジトリをもとに、新しいGitリポジトリを作成します。コードが格納されるフォルダ名はリポジトリ名と同じになります。この場合、Gitは「project-name」という名前のフォルダを作成します。
続いて、cdコマンドで新しいGitリポジトリに移動します。これで新しいリポジトリ内に入ったので、ファイルの閲覧や編集をすぐに始められます。
カスタムクローン操作
git cloneコマンドは複数のパラメータを受け付けます。これらのパラメータを活用することで、目的に合わせたカスタムクローン操作が可能です。ここでは、git cloneを使う際に知っておきたい主要なカスタム操作の例を紹介します。
特定のフォルダにクローンする
デフォルトでは、クローン元のリポジトリと同じ名前のフォルダが自動的に作成されます。最初の例ではフォルダ名を指定せずにリポジトリをクローンしたため、作成されたコピーのフォルダ名は「project-name」になりました。
しかし、リポジトリをクローンする際に、特定のフォルダへクローンしたいケースもあるでしょう。そのような場合は、クローン先となるディレクトリ名を明示的に指定します。
git cloneコマンドには第2引数を渡すことができます:
git clone <repo> <folder>
例えば、架空のGitリポジトリの内容を「my-project」というフォルダにクローンしたいとしましょう。次のコードで実現できます:
git clone https://github.com/username/project-name.git my-project cd my-project
まず、参照先のGitHubリポジトリがクローンされます。この例ではフォルダ名として「my-project」を指定しているため、リポジトリのコードはこのフォルダ内に展開されます。その後、cdコマンドでgit cloneコマンドが作成したmy-projectフォルダに移動します。
シャロークローン(浅いクローン)を作成する
デフォルトでは、リポジトリをクローンすると、そのコミット履歴もすべて一緒にクローンされます。プロジェクトに何百ものコミットが蓄積されている場合、ローカルクローンの作成に時間がかかることがあります。
リポジトリ全体をクローンするのを避けたい場合は、シャロークローン(shallow clone)を作成しましょう。シャロークローンでは、「depth」パラメータで指定された範囲のコミット履歴のみがクローンされます。
シャロークローンを作成する構文は以下の通りです:
git clone --depth=1 <repo>
「depth」パラメータの値は、クローンしたい過去のコミット数を表します。この例ではdepthに1を指定しているため、cloneコマンドは最新のコミットのみをローカルマシンにコピーします。
例えば、架空のGitHubリポジトリに10,000件のコミットがあるとしましょう。完全にコピーするには相当な時間がかかります。そこで、現在のコードと直近10件のコミットだけを取得し、リポジトリの全履歴までは不要という場合は、次のコードを使用します:
git clone --depth=10 https://github.com/username/project-name.git
上記のコマンドにより、現在の状態のプロジェクトのコピーが作成されました。リポジトリの履歴を10コミット分さかのぼって確認できますが、それより前のコミットに関するデータは含まれていません。
より高度な設定オプションについては、git cloneコマンドに関する公式Gitドキュメントを参照してください。
GitでサポートされるURLの種類
git cloneコマンドは、さまざまな種類のURLに対応しています。git cloneは通常リモートリポジトリのクローンに使用されるため、ここではGitがサポートする主なURL形式を紹介します。
Gitプロトコル
gitプロトコルは、Gitバージョン管理システムを使ってリポジトリをクローンする際に使用されるプロトコルです。gitプロトコルには認証機能がない点に注意してください。gitプロトコルを使用するURLの例は以下の通りです:
git://host.com/repo/path.git
URLが「git:」で始まることで、Gitクライアントに対してgitプロトコルを使ってリポジトリをクローンするよう指示しています。
SSH
Secure Shell(SSH)は、ネットワーク上のサーバーにリモートアクセスするための仕組みです。SSHは認証機能を提供するため、セキュアなGitリポジトリへのアクセスにはSSH URLがよく使われます。SSHプロトコルを使用するGit URLの例は以下の通りです:
ssh://user@host.com/repo/path.git
この例の「user」は、対象のリポジトリにアクセスしようとしているユーザー名を指します。リポジトリをクローンする前に、SSH経由でのサインインが必要です。
HTTP / HTTPS
Hypertext Transfer Protocol(HTTP)は、インターネット上でWebページのデータを転送するために使用されるプロトコルです。HTTP URLはGitリポジトリでも広く利用されています。HTTPSを使用するGit URLの例は以下の通りです:
https://host.com/repo/path.git
この例では、リポジトリはHTTPSプロトコルを使用しています。「git」や「ssh」の代わりに、GitリポジトリURLの先頭に「https」を指定します。
まとめ
git cloneコマンドは、Gitリポジトリのローカルコピーを作成するために使用されます。クローンを活用すれば、プロジェクトのメインバージョンに影響を与えることなく自由に編集できる、独立したリポジトリのコピーを手に入れられます。
変更内容をプロジェクトのメインバージョンに反映する準備が整ったら、コミットを作成しましょう。
このチュートリアルでは、具体的な例を交えながらgit cloneコマンドの使い方を解説しました。これであなたも、プロのエンジニアのようにgit cloneを使ってリポジトリをクローンできるはずです!
-
Gitリセットでコミットを取り消す!基本から実践テクニックまで徹底解説
個人でもチームでも、プロジェクトを進めていると「コミットを取り消したい」という場面に遭遇することがあります。そんなときに頼りになるのが git reset コマンドです。まさに命綱とも言えるツールの一つでしょう。 Gitの追跡メカニズム git reset を理解する前に、まずGitの内部構造について押さえておきましょう。Gitは、ノードとポインタで構成されるツリー構造によってファイルを管理・追跡しています。 ローカルのGitリポジトリには、基本的に次の3つの「ツリー」が存在します。 作業ディレクトリ(Working Directory):ワーキングツリーとも呼ばれ、ローカルディレク
-
GitとGitHubの使い方入門:初心者向けステップバイステップガイド
GitHubは現在、世界最大のオープンソースプロジェクトホスティングサービスです。Atomテキストエディタ、GoogleのTensorFlow、Facebook(現Meta)のReactなど、有名なプロジェクトが多数公開されています。ビッグデータ、人工知能(AI)、IoTといった先進的な分野のプロジェクトで特に知られていますが、アニメーション、絵文字、ゲーム、シンプルなソフトウェアなども見つけることができます。仕組みは「トレント」にやや似ていますが、扱う対象がソフトウェアやアプリである点が異なります。 GitHubを使い始めたばかりの方にとって、学習曲線はかなり急に感じられるかもしれません。