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
Ответ 9
Используйте git ls-files
для извлечения удаленных (-d) или измененных (-m) файлов.
git checkout $(git ls-files -d)
см. Как я могу восстановить только измененные файлы в git checkout?
Ответ 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>
Теперь у вас локальная ветвь будет иметь все файлы, в частности