Git-cloneをつかうと、すべての履歴がコピーされるため、時間がかかるし、ストレージ容量をかなり消費する。
クローン元に応じて2種類の方法により消費するストレージを削減することができる。
ハードリンク - 同じファイルシステムからクローンする場合
同じファイルシステムからクローンする場合、
.git/objects
下のデータをハードリンクで作成することで、時間・容量を減らせる。
git clone --local repository [directory]
objects
のファイルは、一度作成されると中身が書き換えられることはないので、特に使用する上で制約はないはずだ。
Git-fetchで新しいコミットを取り込んだ場合は、新しいファイルが作成されるようだ。
また、元のrepositoryでgit-gcを使った場合など、ハードリンクが切れて、消費する容量は大きくなる可能性がある。
浅いクローンをつくる - 外部のURLからクローンする場合
他のファイルシステムや外部のURL (git://...など) からクローンする場合、
--depth
オプションで浅いクローンを作ることで時間・容量を節約できる。
git clone --depth 1 repository [directory]
もしローカルのレポジトリからクローンする場合、
file://
を前につけないと、
--depth
オプションが無視されてそのままクローンが開始されてしまう。
浅いクローンでは、変更履歴が取得されないので、履歴を遡るような用途には使用できない。
もし後で履歴が必要になった場合、git fetch
で取得することができる。
もともと、何かのプロジェクトのソースを探していたら
git clone --depth
で取得する方法が書かれていてこの方法を見つけたのだが、
git clone --depth
については以下のサイトにわかりやすく書かれている。