Git восстановить удаленный файл, если после удаления не было сделано коммита

Я удалил несколько файлов.

Я еще НЕ совершал.

Я хочу reset мое рабочее пространство для восстановления файлов.

Я сделал git checkout ..

Но удаленные файлы все еще отсутствуют.

И git status показывает:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   deleted:    cc.properties
#   deleted:    store/README
#   deleted:    store/cc.properties
#

Почему не git checkout . reset рабочее пространство HEAD?

Ответ 1

Вывод подскажет вам, что вам нужно сделать. git reset HEAD cc.properties и т.д.

Это остановит работу rm. После этого запуск git status снова скажет вам, что вам нужно сделать git checkout -- cc.properties, чтобы вернуть файл.

Обновление: У меня это в моем файле конфигурации

$ git config alias.unstage
reset HEAD

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

Ответ 2

Вы выполнили удаление, поэтому вам нужно сделать:

git checkout HEAD cc.properties store/README store/cc.properties

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

Ответ 3

Просто сделайте git checkout path/to/file-I-want-to-bring-back.txt

Ответ 4

Чтобы восстановить все неустановленные удаления сразу, автоматически, без указания каждого отдельного пути:

git ls-files -d | sed -e "s/\(.*\)/'\1'/" | xargs git checkout --

Чтобы восстановить все поэтапные удаления сразу, автоматически, без указания каждого отдельного пути:

git status | grep 'deleted:' | awk '{print $2}' | xargs git checkout --

Ответ 5

Так как вы делаете git checkout ., похоже, что вы пытаетесь восстановить ветвь назад до последнего состояния фиксации.

Вы можете достичь этого с помощью git reset HEAD --hard

Внимание!

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

Ответ 6

если вы использовали

git rm filename

чтобы удалить файл тогда

git checkout path/to/filename

не работает, так что в этом случае

git checkout HEAD^ path/to/filename

должно сработать

Ответ 7

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

Git версия на OSX Mavericks

mac-pro:main chris$ git version
git version 1.8.5.2 (Apple Git-48)

Команда

git checkout HEAD -- path/to/file/file.cc

Ответ 8

git checkout HEAD -- client/src/pp_web/index.cljs

Ответ 10

Если вы хотите восстановить сразу все файлы

Не забудьте использовать этот период, потому что он сообщает git, чтобы захватить все файлы.

Эта команда будет reset голова и нести все изменения:

$ git reset HEAD . 

Затем запустите это, чтобы восстановить все файлы:

$ git checkout .

Затем, выполняя статус git, вы получите:

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Ответ 11

Вы можете увидеть это

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

git checkout -- .

прежде чем что-то совершить.

Вы также можете избавиться от созданных файлов, которые еще не созданы. И ты не хочешь их. С помощью:

git reset -- .

Ответ 12

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

$ git reset <commitid#-where-file.cpp-existed> file.cpp

Мне пришлось сделать еще один шаг в дополнение к reset, чтобы вернуть файл:

$ git checkout -- file.cpp

Ответ 13

Если вы не внесли каких-либо изменений, все, что вам нужно сделать, это сохранить эти изменения, и вы вернетесь к последнему рабочему фиксации.

git stash
git stash clear
git clean 

Ответ 14

если вы ищете удаленный каталог.

 git checkout ./pathToDir/*

Ответ 15

Для меня работала git checkout {SHA1 of commit with version to restore} "{path to file to restore}"

Например git checkout 5a6b3179e58edff9c90326b9a04284b02fd67bd0 "src-ui/views/includes/radar.pug"

(выполняется в ветке, в которую мы хотим включить файл)

После выполнения этой команды восстановленный файл будет существовать в исходном местоположении (которое должно быть отправлено)

Ответ 16

Если вы установили ToroiseGIT, просто выберите пункт "Revert..." для всплывающего меню родительской папки.

Ответ 17

ВНИМАНИЕ: передайте любую работу, которую хотите сохранить в первую очередь.

Вы можете сбросить рабочее пространство (и восстановить удаленные файлы)

git checkout ./*

Ответ 18

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

Ответ 19

Я также удалил все мои файлы случайно и восстановил, используя следующую команду:

$ git config alias.unstage
$ git checkout HEAD^ *

Ответ 20

1.Найдите это конкретное сообщение, к которому вы хотите вернуться, используя:

   git log
This command will give you a list of commits done by you .

2. Повторите попытку с помощью:

    git revert <commit id> 

Теперь у вас локальная ветвь будет иметь все файлы, в частности