gitを使用して最新のリビジョンのみを取得する


380

gitを使用するプロジェクトを追跡したい。完全なリポジトリと完全な履歴を複製したくありません。最新のリビジョンが必要です。リモートプロジェクトから新しいリビジョンに更新できるようにしたいです。

私はgit cloneを使用してみましたが、これによりリポジトリ全体のコピー(巨大なファイルサイズ)が作成され、変更を追跡するとディスク領域がさらに大きくなります(100 MBのファイルが2 GBを超えるようになりました)。

パッチを提出するつもりはなく、履歴も必要ありません。Subversionのように最新バージョンが欲しいだけです。

これはgitで可能ですか?


2
gitの1.9 / 2.0(Q1 2014)浅いクローニングしてはるかに効率的であろう:stackoverflow.com/a/21217267/6309stackoverflow.com/a/21217326/6309
VonC

回答:


552

次の--depthオプションを使用しますgit clone

指定したコミット数に切り捨てられた履歴を持つ浅いクローンを作成します。

例: git clone --depth=1 <remote_repo_url>


87
例:git clone --depth=1 <remote_repo_url>
iDev247 2013年

14
以来82fba2bコミット gitの1.9にこれらの制限はもはや存在しません。
niutech 2014年

1
どのような制限がありますか?
無視

4
@Triangles:制限事項(現在ではありません):浅いリポジトリにはいくつかの制限があります(そこから複製またはフェッチしたり、そこからプッシュしたり、そこに入れたりすることはできません)が、大規模な最近の履歴のみに関心がある場合は適切です長い歴史を持つプロジェクトであり、修正をパッチとして送りたいと思うでしょう。
odinho-Velmont 2016年


79

シャロークローン(git clone --depth=1 <URL>)を実行する代替ソリューションは、リモート側でサポートされている--remote場合は、gitアーカイブのオプションを使用することです

$ git archive --format=tar --remote=<repository URL> HEAD | tar xf -

または、問題のリモートリポジトリがgitwebやGitHubなどのウェブインターフェースを使用して閲覧できる場合は、「スナップショット」機能があり、ウェブインターフェースから最新バージョン(バージョン情報なし)をダウンロードできる可能性があります。


4
ただし、このソリューションはこの要件を満たしません。「リモートプロジェクトから新しいリビジョンに更新できるようにしたい」。基本的にはアーカイブをダウンロードするため、1つまたは2つのコミットをすばやく進めることはできません。「浅いクローン」はそれを可能にします。それでも、このソリューションにはユースケースがあるので、言及する価値があります。
VasiliNovikov 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.