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 時間が重要です。
関連ガイド
What Is a Shallow Clone?What is a shallow clone? Learn how cloning with limited history speeds up CI checkouts, the tradeoffs of trun…
What Is fetch-depth?What is fetch-depth in CI checkouts? Learn how this setting controls how much Git history a job fetches, why…
What Is a Git Remote?What is a Git remote? An explainer on named connections to hosted repositories, how push and fetch use them,…