Если ситуация срочная , и вы просто хотите сделать то, что спросил спрашивающий, быстрым и грязным способом, предполагая, что ваш проект находится в каталоге, называемом, например, «мой проект»:
Быстрый и неаккуратный : в зависимости от обстоятельств, быстро и грязно на самом деле может быть очень хорошим. Что мое решение здесь делает, так это НЕ необратимо заменяет файлы, которые у вас есть в вашем рабочем каталоге, на файлы, извлеченные / извлеченные из глубины репозитория git, скрывающиеся под вашим каталогом .git /, используя чертовски умные и дьявольски мощные команды git, из которых есть многие. ВЫ НЕ ДОЛЖНЫ ДЕЛАТЬ ТАКОЕ ГЛУБОКОЕ ДЕЙСТВИЕ, ЧТОБЫ ВОССТАНОВИТЬ то, что может показаться катастрофической ситуацией, и попытка сделать это без достаточного опыта может оказаться фатальной .
Скопируйте весь каталог и назовите его как-нибудь еще, например, «мой проект - копия». Предполагая, что ваши файлы репозитория git ("repo") находятся в каталоге "мой проект" (место по умолчанию для них, в каталоге с именем ".git"), вы теперь скопируете свои рабочие файлы и файлы репо.
Сделайте это в каталоге "мой проект":
.../my project $ git reset --hard [first-4-letters&numbers-of-commit's-SHA]
Это вернет состояние репо в «моем проекте» к тому, что было, когда вы сделали этот коммит («коммит» означает снимок ваших рабочих файлов). Все коммиты с тех пор будут навсегда потеряны в «моем проекте», НО ... они все равно будут присутствовать в репозитории в разделе «мой проект - копия», поскольку вы скопировали все эти файлы, в том числе и те, которые находятся в ... /. Git /.
Затем у вас есть две версии в вашей системе ... вы можете просматривать, копировать или изменять файлы, представляющие интерес, или что-то еще из предыдущего коммита. Вы можете полностью отбросить файлы в разделе «Мой проект - копия», если вы решили, что новая работа, так как восстановленный коммит никуда не денется ...
Очевидная вещь, если вы хотите продолжить состояние проекта, не отказываясь от работы, поскольку этот извлеченный коммит снова переименует ваш каталог: удалите проект, содержащий извлеченный коммит (или дайте ему временное имя), и переименуйте свой " мой проект - скопируйте "каталог" обратно в "мой проект". Тогда, возможно, попытайтесь понять некоторые другие ответы здесь, и, вероятно, сделайте еще один коммит довольно скоро.
Git - блестящее творение, но абсолютно никто не может просто «поднять его на лету»: также люди, которые слишком часто пытаются объяснить это, предполагают, что они уже знакомы с другими VCS [системами контроля версий] и слишком глубоко вникают слишком рано, и совершать другие преступления, такие как использование взаимозаменяемых терминов для «проверки» - способами, которые иногда кажутся почти рассчитанными, чтобы запутать новичка.
Чтобы избавить себя от стресса, учитесь на моих шрамах. Вы должны в значительной степени прочитать книгу по Git - я бы порекомендовал «Контроль версий с помощью Git» . Сделай это раньше, чем позже. Если вы это сделаете, имейте в виду, что большая часть сложности Git связана с ветвлением, а затем с повторным объединением: вы можете пропустить эти части в любой книге. Из твоего вопроса нет причин, почему люди должны ослеплять тебя наукой .
Особенно, если, например, это отчаянная ситуация, и вы новичок в Git!
PS: Еще одна мысль: (сейчас) на самом деле довольно просто хранить репозиторий Git в каталоге, отличном от каталога с рабочими файлами. Это означает, что вам не нужно будет копировать весь репозиторий Git, используя вышеуказанное быстрое и грязное решение. Смотрите ответ Фрайера, используя --separate-git-dir
здесь . Тем не менее, будьте осторожны : если у вас есть репозиторий «отдельный каталог», который вы не копируете, и вы выполняете полный сброс, все версии, следующие за фиксацией сброса, будут потеряны навсегда, если у вас нет, как вы абсолютно должны, регулярно создавайте резервные копии вашего хранилища, желательно в облаке (например, Google Drive ) среди других мест.
В этой теме «резервного копирования в облако» следующим шагом является открытие учетной записи (конечно же, бесплатной) с помощью GitHub или (на мой взгляд, лучше) GitLab . Затем вы можете регулярно выполнять git push
команду, чтобы сделать ваше облачное хранилище обновленным «должным образом». Но, опять же, говорить об этом слишком рано.