2017-09-13 24 views
0

特定のコミットハッシュでgit repoを取得しようとしていますクローンなしで!すべての例では、リポジトリ全体をクローンしたいと考えています。これは理にかなっていますが、私が心に留めているレポは巨大なので、ドッキング・イメージで行くように小さなフットプリントを残しておく必要があります。クローンなしで特定のコミットでgit repoを取得する

ハッシュがURLにあるコミット - wgetcurlは/再帰的にフェッチすべきでしたが、私は感情のgithubのは、私が今まで取得など、すべてがrobots.txt

レポで、コミットすることをブロックしている必要があり、次のいずれか

https://github.com/phalcon/cphalcon/tree/1d6d21c98026b5de79ba5e75a3930ce7d1ebcd2e

私の最高の試みエラー:

git fetch https://github.com/phalcon/cphalcon/ 1d6d21c98026b5de79ba5e75a3930ce7d1ebcd2e 
error: Server does not allow request for unadvertised object 1d6d21c98026b5de79ba5e75a3930ce7d1ebcd2e 

更新

クローンを使用した回答の候補は質問に答えていません。私はクローン/チェックアウトの問題はありません。

あなたは、エラーメッセージに示されている理由のため、Gitのリポジトリが必要になります
+1

[特定のリビジョン/チェンジセットでgitリポジトリをクローンする方法](https://stackoverflow.com/questions/3489173/how-to-clone-git-repository-with-specific-revision-changeset)の可能な複製 – jonrsharpe

+0

タグ、人を使用してください! – o11c

+0

このオプションはhttps://developer.github.com/v3/git/trees/にあるかもしれません(ただし、使用すると痛い、浅いクローンははるかに簡単で生産性が高いことを警告します)。 – torek

答えて

1

ローカルで全体のレポをせずにそれをやろうとしている。

error: Server does not allow request for unadvertised object ... 

「非通知オブジェクトは、」名前を持たないものですそれに直接取り付けられています。 (オブジェクトに名前が付いていれば、名前付きのものを要求することができ、サーバーはオブジェクトを渡すことになります。「私は青のネコを許可しません」という苦情は、 )これは、いくつかの間接的な手段、すなわちgit fetchを使ってオブジェクトを取得する必要があることを意味しています。

必要なリポジトリは、定義上、元のリポジトリのクローン、または少なくとも部分クローンです。 浅いクローンを使用できます。これは不完全なクローンです。正確にどの深さが必要なのかは、前もって計算できないものです。完全なクローンを持っている人はそれを理解することができます。そして、十分なクローンがあれば、正確な数を見つけることができます。しかし、あなたのクローンが浅すぎると、あなたのクローンがあまりにも浅いことがわかります。

Git fetch a specific commit by hashおよびgit shallow clone (clone --depth) misses remote branchesも参照してください。 --single-branchが必要な場合としない場合があります。ある程度の深さでクローンし、十分であるかどうか確認し、そうでない場合は、十分になるまでgit fetch --depth <bigger-number>で深さを上げます。


は実際には、このロジックは、フレーズ「ルールを証明する例外」のための真の起源であるように思われる:それはcasibus非exceptisにラテン語ExceptioのPROBATのregulamから来ています。詳細はhttps://pocketbookuk.com/tag/cicero/this answer on english.stackexchange.comを参照してください。

関連する問題