Gitの浅いクローンを完全なクローンに変換する方法は?


回答:


92

編集: git fetch --unshallow今はオプションです(Jack O'Connorに感謝)。

実行できますgit fetch --depth=1000000(リポジトリのコミットが100万回未満であると想定)。


237
これでgit fetch --unshallow(@sdramの回答のように)存在するため、この回答はもはや最良のものではありません。
ジャック・オコナー

1
@sdramの答えは私(gitバージョン2.1.1)にはうまくいきませんでしたが、この答えはうまくいきました。
わかりました-SEは悪です

2
どちらの答えもうまくいきませんでした。どちらのコマンドも不足しているすべてのコミットのフェッチに成功しましたが、新しいコミットをプッシュしようとすると、サーバーが「浅い」参照を知らないというエラーが表示されます
Tyguy7

3
git fetch --depth=2147483647コマンドに提供できる最大の深さです。
2017

5
を使用git fetch --unshallowしましたが、まだすべてのブランチが表示されていません。
シド

674

以下のコマンド(gitバージョン1.8.3)は、浅いクローンを通常のクローンに変換します

git fetch --unshallow

次に、オリジンのすべてのブランチにアクセスするには(コメントの@Peterに感謝)

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin

36
--single-branchの副作用は元に戻りません。これを行うには、.git / configを編集し、fetch = + refs / heads / BRANCHNAME:refs / remotes / origin / BRANCHNAMEをfetch = + refs / heads / *:refs / remotes / origin / *に変更します
Peter Cordes

3
これはリモートブランチを追跡するローカルブランチを作成しないので、それをセットアップするには-b BRNAME origin / BRNAMEをチェックアウトする必要があります。
Peter Cordes 14

25
参照してくださいstackoverflow.com/questions/17714159/...git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"; git fetch origin 答えから手によって製作中.git / configのと同じであるはずです
ピーター・コルド

これは、リポジトリが浅いとしてマークされている場合にのみ機能します。方法は思い出せませんが、浅いクローンを明示的に作成しなくても、不完全なリポジトリが作成される場合があります。@svickのstackoverflow.com/a/6802238/260122が毎回機能する答えです。
2017

git fetch --unshallow --update-head-ok origin '+refs/heads/*:refs/heads/*'私のために働いた
gzaripov

19

私は特定のコミットにまでリポジトリを深くする必要がありました。

を読んだ後man git-fetch、コミットを指定することはできないが、日付を指定できることがわかりました。

git fetch --shallow-since=15/11/2012

段階的な深化が必要な人のために、別のman引用:

--deepen=<depth>

--depthと同様ですが、各リモートブランチ履歴の先端からではなく、現在の浅い境界からのコミット数を指定します。



0

上記のメッセージのどれもトリックをしませんでした。浅いクローンから始めてgitタグを操作しようとしています。

最初に試しました

git fetch --update-shallow

どの種類が途中で機能しました。まだタグがありません!

git fetch --depth=1000000

この最後のコマンドは実際にタグをフェッチし、ようやく実行できました

git checkout -b master-v1.1.0 tags/v1.1.0

そしてそれで終わります。

HTH

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.