2016-12-20 6 views
1

行方不明のコミットをすべて取り出すことなくリモートリポジトリを取得することはできますか?小さなバッチでGitをコミットする方法

私は自分のコンピュータ上にリポジトリを持っています。このリポジトリは、他のリポジトリの参照として使用して、展開時間を短縮します。残念ながら、私はそれをしばらく更新せず、リモートリポジトリと同期していません。 GitHubはひどく遅く(40〜50kbps)、私は約150MBのダウンロードがあります。 Gitが81%でダウンロードを停止すると、これはさらに面白くありません....

フェッチするコミット量を減らす方法はありますか?私は--depth引数を使うことを考えていましたが、私は浅いGitリポジトリを持っていないので、それを1つにしたくありません。また、--depthは、この日付からフェッチがこの日付にコミットする(これもうまくいく)ので、機能していないようです。可能であれば、毎日コミットを取り出すことができました。

フェッチに失敗すると、フェッチを開始する前に再起動する必要があります。私は小さなチャンクを取り出せるようにしたいので、失敗した場合、150mbを何度も低速でダウンロードする必要はありません。

+0

ダウンロード速度を向上させた別の場所でクローンを作成し、ゆっくりと接続されたマシンに移動する方法はありますか? – Vampire

+0

私のインターネット接続は高速です。私は約20mbit持っています。 150MBのダウンロードには数秒かかります。それは時には「地獄のように遅い」という何らかの理由でギブスです。 –

+1

ああ、おそらくプロトコルを変更できますか? https <-> ssh <-> git – Vampire

答えて

1

第2の@Vampire's suggestionできます。 SSHはGitデータを転送するためにHTTPSよりはるかに信頼性が高いことが分かりました。

AFAIK、コミットをリモートリポジトリにリストすることはできません(特定のブランチに対してのみ最新のSHAを取得できます)。あなたが便利なSHA、you can specify the commit to downloadをコミットしている場合(それがあった場合、私はちょうどmy answer to "How to set a maximum commit count on git push"を変更したでしょう。)しかし、:

git fetch origin 96de5297df870:refs/remotes/origin/master 

(これは、コミットそれを指すようにorigin/master追跡ブランチが更新されます。)

あなたのコードはGitHub上でホストされているので、GitHubのログを調べ、最新のものになるまで特定のコミットをフェッチすることをお勧めします。また、一度に一定量のコミットを取得するのではなく、bisectが一度にダウンロードできる数を把握することをお勧めします。

+1

それはかなり面白いです、私はすでにすべてのものをすでに同期して以来、今日は本当にテストすることができません。 1つの質問は、自分のリポジトリに所有していない親コミットもダウンロードしないでしょうか?技術的には、1つのコミットを取得するのは、私がチェリーピックを使用しない限り役に立たないからです。親コミットもフェッチする場合は、github apiを使用してフェッチするコミットのリストを作成することができます。 –

関連する問題