Skip to content
Latchkey

git clone とは?

git clone はリポジトリ全体を、全履歴を含めてマシンにコピーし、後で同期できるようにリモートを設定します。

clone は通常プロジェクトで最初に行うことです。git clone はリポジトリの完全なコピー、そのファイルと全履歴をダウンロードし、ソースを指す origin というリモートを配線します。そこから完全にオフラインで作業し、準備ができたら push できます。

clone が与えるもの

clone はリポジトリの完全で独立したコピーです。履歴内のすべてのコミット、ブランチ、タグに加え、デフォルトブランチにチェックアウトされた作業ディレクトリと設定済みの origin リモートを得られます。コピーが完全なので、ネットワーク接続なしにコミット、ブランチ、履歴の調査ができます。

リポジトリの clone

git clone に URL を指定すると、Git はプロジェクトとその履歴を含むディレクトリを作成します。

Cloning and checking history
git clone https://github.com/owner/project.git
cd project
git log --oneline -5

完全 clone と部分 clone

デフォルトでは clone はすべてを取得するため、古いプロジェクトでは大きくなることがあります。オプションを使うと最近の履歴だけ(shallow clone)を取得したり、取得するブランチやファイルを制限したりできます。これらは完全性と引き換えに速度とディスク容量を得るもので、自動化環境で最も重要です。

CI/CD における clone

ほぼすべての CI ジョブは、ビルドするコードを得るためにランナー上でリポジトリを clone することから始まります。clone 時間はすべてのパイプライン実行の一部なので、最適化の頻繁な対象です。Latchkey のようなマネージドランナーでは、高速な checkout ステップがその起動コストを数千のジョブにわたって低く保ちます。

clone のコツ

  • clone はデフォルトで全履歴と origin リモートを与えます。
  • 最近のコミットだけ必要なときは CI で shallow clone を使います。
  • 非常に大きなリポジトリではブランチを制限するか partial clone を使います。
  • clone 時間はすべてのパイプライン実行に加算されることを忘れないでください。

重要なポイント

  • git clone はリポジトリを全履歴とともにコピーし origin を設定します。
  • shallow clone と partial clone は完全性と引き換えに速度を得ます。
  • CI はジョブの開始時にリポジトリを clone するため、clone 時間が重要です。

関連ガイド