Gitの小ネタおれおれAdvent Calendar 2022 – 21 日目

長いプロジェクトだと Git の履歴が長く大きくなるため clone にも時間がかかります。

コミット件数や日時で制限ができます。

--depth 123 で件数制限

ビルド用なら --depth 1 でよさそう。

$ git clone --depth 1 [email protected]:ginpei/example.git

git log すると直近 1 件のみが出てきます。それ以前のものは参照できません。

やっぱりもっと欲しい!

クローン時に取得しなかったものも git fetch で取得できます。

$ git fetch --depth=100

--depth が必要。ないと既に持っている分より前のものは見に行ってくれませんでした。

--shallow-since="last year" で時間制限

件数ではなく時間で制限することもできます。

$ git clone --shallow-since="last year" [email protected]:ginpei/example.git

日付の書式は正体不明だけど “2022-12-24” とか “two months ago” とか “yesterday” とか割と色々受け付けてくれるそう。

やっぱりもっと欲しい!

--depth と同じく git fetch にオプションを付けてもっと取ってくることができます。

$ git fetch --shallow-since="5 years ago"

おしまい

ほとんどの場面では --depth=1 or なしの 2 択って感じでしょうか。

参考