Git の基本 | git clone

git clone コマンド

git clone は、既存の Git リポジトリのコピーを作成するコマンドである。このコマンドは svn checkout に似ているが、作業コピー自体が完全な Git リポジトリを構成し、変更履歴を自分自身で持ち、自分のファイルを管理し、元のリポジトリとは完全に独立した環境を提供する点が異なる。

利用者の便宜のため、clone すると元のリポジトリを指す origin という名前のリモート接続が自動的に作成される。これにより、中央リポジトリと非常に簡単に通信できる。

使い方

git clone <repo>

<repo> にあるリポジトリをローカルマシンへ複製するコマンドである。<repo> のリポジトリは同じローカルマシン上に存在してもよく、HTTP または SSH を使ってアクセスするリモートマシン上に存在してもよい。

git clone <repo> <directory>

<repo> にあるリポジトリを、ローカルマシン上の <directory> という名前のフォルダへ複製するコマンドである。

補足説明

中央リポジトリがすでに作成されている場合、git clone は開発者の作業コピーを作成するもっとも一般的なコマンドである。git init コマンドと同じく、clone も通常は一度だけ行う作業であり、開発者が作業コピー、つまりローカルリポジトリを作成した後は、そのローカルリポジトリを通じてすべてのバージョン管理と共同作業を行う。

リポジトリ間の共同作業

Git における「作業コピー」は、SVN リポジトリからコードをチェックアウトして得られる作業コピーとは大きく異なる概念であることを理解する必要がある。SVN とは異なり、Git では作業コピーと中央リポジトリの間に実質的な違いはなく、どちらも完全な Git リポジトリである。

これにより、Git の共同作業と SVN の共同作業は根本的に異なる。SVN では中央リポジトリと作業コピーの関係が重要な役割を持つが、Git の協力モデルはリポジトリ間の相互作用である。SVN は作業コピーを中央リポジトリへチェックインするのに対し、Git はあるリポジトリから別のリポジトリへコミットをプッシュまたはプルする。

Git チュートリアル: リポジトリ間の共同作業

当然のことながら、所有している Git リポジトリに特別な意味を与えることもできる。たとえば、Git リポジトリを「中央」リポジトリとして指定することで、Git でも集中型ワークフローを採用できる。重要なのは、それがバージョン管理システムや物理的な接続状態によって区別されるのではなく、Git では単なる約束として決まるという点である。

使用例

次の例は、アドレスが example.com で、使用する SSH ユーザー名が john の場合に、サーバーに保存された中央リポジトリの作業コピーを作成する方法を示す:

git clone ssh://john@example.com/path/to/my-project.git
cd my-project
# Start working on the project

1 行目は、ローカルマシンの my-project フォルダに新しい Git リポジトリを作成して初期化し、中央リポジトリからファイルを取得するコマンドである。
完了したら、現在のディレクトリをプロジェクトへ移動し、編集、スナップショットのコミット、他のリポジトリとの通信などの作業を開始する。
また、複製されたリポジトリには .git 拡張子が追加されない。これは、ローカルコピーがベアリポジトリではない状態であることを意味する。