Клонирование дерева в git

Я новичок в git.

Я случайно удалил часть истории для нашего проекта на git. Теперь я хочу настроить голову на последнюю стабильную версию. Проблема в том, что дерево, к которому я хочу установить HEAD, недоступно из него, но я могу получить к нему доступ через браузер.

Кто-нибудь знает, как клонировать определенное дерево с помощью SHA?

Я попробовал git reset SHA, но SHA не распознается. Я также попробовал git clone -b SHA repo.git, но это тоже не сработало.

2 ответа

Вы смешиваете разные понятия.

Всякий раз, когда вы клонируете, вы клонируете целый репозиторий. (Невозможно клонировать определенное "дерево".)

Репозиторий в основном состоит из многих коммитов. Это те, которые вы можете проверить. Каждая фиксация знает свою родительскую фиксацию - это формирует дерево истории.

Сама фиксация содержит дерево каталогов со всеми файлами.

Обычно существует какой-то сервер, на котором размещается "центральный" репозиторий.

Сначала вы клонируете свой репозиторий. Это создаст полную копию этого центрального репозитория на вашем хосте. (Со всеми ветвями и совершает.)

Впоследствии вы обычно взаимодействуете только с местным репозиторием.

Из вашего сообщения об ошибке (к сожалению, скрытого только в некоторых комментариях) кажется, что ваши проекты могут использовать подмодули. (Способ включения совершенно другого хранилища в ваш проект.)

Это, как правило, немного сложно. Посмотрите http://git-scm.com/book/en/Git-Tools-Submodules.


Неужели эта "последняя стабильная версия" уже нажата на сервер? Если да, вы можете запустить git fetch и git checkout SHA.

Если этот конкретный коммит находится только в вашей локальной истории, выполните git reflog и определите фиксацию. Затем проверьте требуемую фиксацию.

licensed under cc by-sa 3.0 with attribution.