2016-12-20 7 views
1

Возможно ли получить удаленный репозиторий, не получая все коммиты, которые отсутствуют, но пусть скажем, по партиям из 100 коммитов?Как получить Git совершает небольшие партии

У меня есть репозиторий на моем компьютере, который используется в качестве ссылки для других репозиториев, чтобы ускорить время развертывания. К сожалению, я не обновлял его некоторое время, и он не синхронизируется с удаленным репозиторием. GitHub ужасно медленный (40-50 Кбит/с), и у меня около ~ 150 мб для загрузки. Это еще менее забавно, когда Git перестает скачивать на 81% ....

Есть ли способ уменьшить количество фиксаций для извлечения? Я думал использовать аргумент --depth, но у меня нет мелкого хранилища Git, и я не хочу, чтобы он стал одним из них. Кроме того, --depth, похоже, не работает, поскольку извлечение фиксируется с этой даты до этой даты (что также было бы неплохо). Поэтому, если возможно, я мог бы совершать коммиты день за днем.

Проблема заключается в том, что при сбое выборки я должен перезапустить, откуда я был, прежде чем запускать выборку. Я бы хотел получить более мелкие куски, поэтому, если это не удастся, мне не придется загружать 150mb снова и снова с низкой скоростью.

+0

Как насчет клонирования где-то, где у вас есть более высокая скорость загрузки, а затем переместить его на медленно подключенную машину с помощью других средств? – Vampire

+0

Мое подключение к Интернету быстро. У меня около 20 м. Загрузка 150mb занимает несколько секунд. По некоторым причинам это github, что это иногда «медленно, как черт». –

+1

А, хорошо, может быть, изменить протокол? https <-> ssh <-> git – Vampire

ответ

1

I второй @Vampire's suggestion, чтобы попытаться переключить протоколы, если можете; Я обнаружил, что SSH гораздо надежнее, чем HTTPS для передачи данных Git.

AFAIK, невозможно перечислить коммиты в удаленном репозитории (вы можете получить только последний SHA для данной ветки). (Если бы это было, то я бы только изменил my answer to "How to set a maximum commit count on git push".) Тем не менее, если у вас есть коммита SHA под рукой, you can specify the commit to download с: (. Это позволит обновить origin/master отслеживания ветви, чтобы указать, что обязательство)

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

Поскольку ваш код размещен на GitHub, я рекомендую вам проверить журнал в GitHub и получить специальные коммиты, подобные этому, до тех пор, пока вы не будете в курсе последних событий. Кроме того, вместо того, чтобы собирать определенное количество коммитов за раз, я предлагаю вам bisect обязуется выяснить, сколько вы можете скачать сразу.

+1

Это очень интересно, я не могу сегодня протестировать, так как я уже много уже синхронизировал. Один вопрос думал, не будет ли он также загружать родительский коммит, которого у меня нет в моем собственном репозитории? Потому что технически, выбор одного фиксации бесполезен, если я не сделаю вишневый выбор. Если он также извлекает родительское commit, тогда может быть возможно сформировать список фиксации для извлечения, используя github api. –

 Смежные вопросы

  • Нет связанных вопросов^_^