リポジトリの最新の履歴のみ取得する方法

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

Gitにおいて、リポジトリをクローンした場合、リポジトリの全履歴を取得する。
ここでは、最新のコミットだけを取得する方法を記載する。(過去の履歴は不要)


最新のコミットだけをクローンする(Shallow Clone)

最新版のみクローンすることを、GitではShallow Cloneと呼ばれている。
depthオプションに渡す値は、取得する履歴の数である。下記では、1を指定しているので最新のみを取得している。
--depth 1でShallow Cloneしたリポジトリにおいて、git logコマンドを実行すると、ログが1つしかないことが分かる。

# masterブランチ
git clone --depth 1 "URL" "ローカルリポジトリ"

# masterブランチ以外
git clone --depth 1 --branch <branch> "URL" "ローカルリポジトリ"


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


# 入力
git log

# 出力
commit 51ebf55b9309824346a6589c9f3b130c6f371b8f (grafted, HEAD -> master, origin/master, origin/HEAD)
Author: Junio C Hamano <gitster@pobox.com>
Date:   Mon Feb 17 13:21:41 2020 -0800

The sixth batch for 2.26

Signed-off-by: Junio C Hamano <gitster@pobox.com>



利点

変更履歴が多く、通常のクローンでは時間が掛かるリポジトリの場合、
Shallow Cloneを使用することで、通常のクローンよりも短時間で最新版を取得することができる。

最近の履歴だけ見る場合または最新版に対して修正パッチを作成するといった目的に有益である。


通常のクローンとShallow Cloneとの相互変換

既に通常のクローンがある場合、それを後からShallow Cloneに変換することが可能である。

git fetch --depth 1


また、既にShallow Cloneがある場合、それを後から通常のクローンにすることが可能である。

git fetch --unshallow



備考

以前は、Shallow Cloneしたリポジトリでは、フェッチやプッシュができないという制限事項があった。
しかし、Git 1.9以降では、それらが改善されており、フェッチやプッシュを行うことが可能になった。