• 1000 прочь. [...] Это иногда полезно, когда вас интересует только недавняя история проекта, даже если реальная история, записанная в восходящем потоке, намного больше. локальный репозиторий в новый каталог
, начиная с из коммита, который вы считали новым root. Обратите внимание, что это решение предполагает, что вас интересует только сохранение
одной ветки в новом репозитории (например,
master
).
Первое, что вам нужно сделать, это создать ветку ссылка, указывающая на родительский из <NEW_ROOT>
в существующем репозитории:
cd your-large-repo
git branch new-root <NEW_ROOT>^
Мы будем использовать new-root
как точку отсечения для мелкий клон. Поскольку мы действительно хотим включить <NEW_ROOT>
в новый репозиторий, мы устанавливаем точку отсечения для его родителя. Конечно, <NEW_ROOT>
должен быть доступен из master
.
На этом этапе вы можете go вперед и клонировать свой локальный репозиторий в новый каталог, указывающий, что:
- Вас интересует только ветка
master
- Вы хотите исключить все коммиты, доступные из
new-root
Вот полная команда:
git clone --branch master --shallow-exclude=new-root file://C:\path\to\your-large-repo C:\path\to\your-new-repo
Параметр --shallow-exclude
- это то, что сообщает Git исключить все коммиты, ведущие до new-root
включительно из клона.
Теперь, если вы cd
перейдете в your-new-repo
, вы обнаружите, что он содержит только ветку master
, а фиксация root равна <NEW_ROOT>
.
В новом репозитории его origin
будет установлено на file://C:\path\to\your-large-repo
. Итак, прежде чем вы go продолжите, вам нужно будет заменить его фактическим URL-адресом удаленного репозитория:
git remote set-url origin https://example.com/your-large-repo.git
На этом этапе вы можете просто принудительно установить pu sh новая история в удаленном репозитории (с обычным предупреждением о последствиях принудительного нажатия ).