Восстановить удаленный файл из репозитория

Я перехожу от SVN к GIT и получил вопрос, для которого я не могу найти ответ. Я опишу обычный сценарий, когда я работаю с некоторыми проектами с открытым исходным кодом через SVN.

  • сделать выписку
  • начните работать с файлами, внесите изменения, чтобы проверить, как работает проект.
  • после p.2 некоторые файлы сильно изменены, и у меня нет шансов вернуться в исходное состояние.
  • Я удаляю измененные файлы с диска "rm filename.cpp", запускаю команду "svn update" и voila, все исходные файлы возвращаются.

Все это отлично работает с GIT, кроме p.4. Я пытаюсь сделать "git pull", он говорит, что проект обновлен, и я не получаю исходные файлы, даже если они отсутствуют в локальной папке.

Какова правильная команда для p.4 при работе с git. спасибо

Ответ 1

Попробуйте проверить текущую ветку (или HEAD):

git checkout HEAD

Или если вы хотите вернуть все в последнее состояние (предупреждение: это навсегда удалит все неуправляемые изменения!), вы также можете reset hard:

git reset --hard

Ответ 2

Самый простой способ указывается на выходе git status:

git checkout -- file

где файл может быть именем удалённого файла. Это восстановит удаленный файл, не затрагивая другие файлы.

Ответ 3

Git ужасно в этом случае, и я так много борюсь с ним, что это невероятно. Вот как я это делаю:

  • Клонировать удаленное репо в каком-то месте на вашем локальном HD, отличном от где у вас есть существующее местное репо
  • Скопировать удаленные файлы/каталоги из недавно клонированного репо в существующее локальное репо
  • Зафиксируйте изменения в существующем локальном репо, при необходимости нажмите также на удаленное репо
  • Удалить недавно клонированное локальное репо

Почему это должно быть сложным и трудоемким, чтобы получить такую ​​простую задачу, которая ускользает от меня...