Help us understand the problem. What is going on with this article?

git リポジトリの最新の履歴だけを取得する shallow clone

More than 3 years have passed since last update.

git でリポジトリを clone した場合、通常は元のリポジトリを丸ごと取得してきます。

しかし、最新版が取得できればそれでよい、過去の履歴情報はいらない、という場合もあるかと思います。そんなとき、次のようにすればリポジトリを丸ごと取得せず、最新版だけ取得できます。

git clone --depth 1 https://github.com/git/git

これは、git のマニュアルでは shallow clone と呼ばれています。

オプション depth に渡す値は、取得する履歴の数です。上記では 1 を指定しているので、最新のみを取得します。depth 1 で shallow clone したリポジトリで git log を実行すると、ログが 1 つしかないのが分かります。

利点

変更履歴が多くて通常の clone では時間がかかるような git リポジトリの場合、shallow clone を使うことで通常の clone より速く最新版を取得できます。

とりあえず最近の履歴だけ見たい、とか、最新版に対して修正パッチを作成したい、とかいった目的に有益です。

通常の clone と shallow clone との変換

既に通常の clone がある場合に、それを後から shallow clone にすることが可能です。次のようにすれば良いです。

git fetch --depth 1

また、既に shallow clone がある場合に、それを後から通常の clone にすることが可能です。次のようにすれば良いです。

git fetch --unshallow

補足

以前は、shallow clone したリポジトリでは、fetch や push ができないという制限事項がありました。しかし、現在(Git 1.9 以降)は、それらが改善されており、fetch や push を行うことも可能になりました。

まとめ

shallow clone はあまり知られていない機能だと思いますが、状況と目的によっては役に立つ機能ではないかと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした