Похожие вопросы

Сделать Windows загрузочной после копирования с одного раздела на другой
Tortoise HG "Out of Memory" при попытке клонировать репозиторий
Изменение виртуальных машин и UUID
Как клонировать жесткий диск с RAID-1 на другой жесткий диск и сделать его загрузочным?
Как вернуть образ VMware vCenter Converter на пустой компьютер?
Клонирование жесткого диска на другой, меньший жесткий диск [дубликат]
Клонирование диска SCSI на диск IDE?
Преобразование USB-накопителя в жесткий диск виртуальной машины
Как переместить / перенести жесткий диск с несколькими загрузочными разделами на больший размер?
Можно ли переместить ОС с жесткого диска емкостью 1 ТБ на SSD емкостью 240 ГБ?
Клонирование жестких дисков из аппаратного массива RAID?
Клонировать диск чуть меньше ССД
Клонирование жесткого диска также копирует ошибки, такие как поврежденные сектора?
Клон OSX и Windows в Bootcamp на SSD с HDD
как вернуться после неудачного извлечения

как вернуться после неудачного извлечения

Я создал мелкий клон огромного репозитория (для экономии времени) с помощью

git clone --depth=1 ...

несколько дней спустя, я подумал, что я хотел бы получить последние коммиты из удаленного хранилища. Я вошел

git тянуть

но он начал загружать намного больше информации, чем у меня было в первую очередь (мой первоначальный мелкий клон был ~150 МБ, и здесь тяга уже загружалась более 100 МБ и показывала 22%), поэтому я нажал Ctrl-C и остановить его.
После этого я попробовал (просто случайно)

git pull -- depth=1

и это вызвало много ошибок. И теперь я остался с локальным репозиторием, где git status говорит:

# On branch master
# Your branch and 'origin/master' have diverged,
# and have 3 and 4 different commits each, respectively.
#

есть ли способ все исправить, кроме создания нового мелкого клона? У меня нет своих обязательств, так что все круто.

5
задан debamitro
источник

3 ответов

когда вы клонируете репозиторий с помощью git, вы получаете полную историю репозитория, от первого коммита до последнего, однако, поскольку вы сделали мелкий клон, у вас есть только глубина истории, которую вы указали.

если вы знаете, к какому коммиту хотите вернуться, вы можете попробовать git reset --hard _commit_, чтобы вернуть вашу голову, индекс и содержимое вашего рабочего каталога к тому, что они были в этом конкретном коммите (первый, в данном случае).

если вы не помните, какой именно, просто используйте git log чтобы проверить через коммиты для того, который вы ищете.

git log

commit c09ea7f2a7f01921fda4ee0b53934cba42fb9ee3
Author: That guy
Date:   The other day

This was your first commit

помните, что вам нужно только первые несколько символов фиксации ID, чтобы сбросить так с помощью:

git reset --hard c09ea7f2a7f019 

должно быть достаточно, чтобы определить коммит как уникальный и сбросить голову, индекс и содержимое каталога, как они были в этом коммите.

1
отвечен malgca 2013-02-03 00:32:18
источник

вы также можете сделать

git pull --rebase --depth=1

это будет пытаться перебазировать ваши локальные изменения после тянуть (хотя вы ничего не сделали, но git думает, что у вас есть). И тогда git должен сказать вам, что есть конфликты, потому что он найдет те же изменения в файлах. Тогда вы можете просто сделать a -

git rebase --skip

т. е. вы просите git не применять ваши локальные изменения. Это должно решить вашу проблему.

1
отвечен Satabdi 2013-02-03 16:30:27
источник
# delete local master and checkout remote
git branch -D master
git checkout master
# clean up any objects left by your interrupted pull
git prune
git gc
0
отвечен bain 2014-03-22 11:10:09
источник

Другие вопросы clone git pull