Я удалил несколько файлов.
Я еще НЕ совершал.
Я хочу 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
?
Вывод подскажет вам, что вам нужно сделать. git reset HEAD cc.properties
и т.д.
Это остановит работу rm. После этого запуск git status
снова скажет вам, что вам нужно сделать git checkout -- cc.properties
, чтобы вернуть файл.
Обновление: У меня это в моем файле конфигурации
$ git config alias.unstage
reset HEAD
который я обычно использую, чтобы отключить материал.
git reset HEAD \*
и затем git checkout -- .
Вы выполнили удаление, поэтому вам нужно сделать:
git checkout HEAD cc.properties store/README store/cc.properties
git checkout .
проверяет только из индекса, в котором удаление уже выполнено.
git checkout HEAD fileToDelete
делает git checkout HEAD fileToDelete
дело.
Просто сделайте git checkout path/to/file-I-want-to-bring-back.txt
Чтобы восстановить все неустановленные удаления одновременно, без указания каждого отдельного пути:
git ls-files -d | xargs git checkout --
Чтобы восстановить все поставленные удаления сразу, автоматически, без указания каждого отдельного пути:
git status | grep 'deleted:' | awk '{print $2}' | xargs git checkout --
Так как вы делаете git checkout .
, похоже, что вы пытаетесь восстановить ветвь назад до последнего состояния фиксации.
Вы можете достичь этого с помощью git reset HEAD --hard
Выполняя это, вы можете удалить все свои последние изменения и отключить свои изменения, например, вы можете потерять работу. Это может быть то, что вы хотите, но проверьте документы, чтобы убедиться.
если вы использовали
git rm filename
чтобы удалить файл тогда
git checkout path/to/filename
не работает, так что в этом случае
git checkout HEAD^ path/to/filename
должно сработать
Вот команда, которая помогла мне на моем 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
git checkout HEAD -- client/src/pp_web/index.cljs
Не забудьте использовать этот период, потому что он сообщает git, чтобы захватить все файлы.
Эта команда будет reset голова и нести все изменения:
$ git reset HEAD .
Затем запустите это, чтобы восстановить все файлы:
$ git checkout .
Затем, выполняя статус git, вы получите:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Используйте git ls-files
для извлечения удаленных (-d) или измененных (-m) файлов.
git checkout $(git ls-files -d)
см. Как я могу восстановить только измененные файлы в git checkout?
Вы можете увидеть это
который используется для случаев, когда вы использовали
git checkout -- .
прежде чем что-то совершить.
Вы также можете избавиться от созданных файлов, которые еще не созданы. И ты не хочешь их. С помощью:
git reset -- .
git checkout -- .
не помогает восстановить удаленные файлы и эквивалентно тому, что пытался запросить: git checkout .
, Часть, которая может работать, это та, которую вы не скопировали: git checkout <file_path>
.
Нашел этот пост, ища ответы на вопрос о том, как удалить файл, который был удален в моей рабочей директории после слияния с другой веткой. После слияния не было совершено никаких обязательств. Поскольку это было слияние в процессе, я не мог просто добавить его обратно, используя:
$ git reset <commitid#-where-file.cpp-existed> file.cpp
Мне пришлось сделать еще один шаг в дополнение к reset, чтобы вернуть файл:
$ git checkout -- file.cpp
Если вы не внесли каких-либо изменений, все, что вам нужно сделать, это сохранить эти изменения, и вы вернетесь к последнему рабочему фиксации.
git stash
git stash clear
git clean
если вы ищете удаленный каталог.
git checkout ./pathToDir/*
Вы можете сбросить рабочее пространство (и восстановить удаленные файлы)
git checkout ./*
ВНИМАНИЕ: передайте любую работу, которую хотите сохранить в первую очередь.
Для меня работала git checkout {SHA1 of commit with version to restore} "{path to file to restore}"
Например git checkout 5a6b3179e58edff9c90326b9a04284b02fd67bd0 "src-ui/views/includes/radar.pug"
(выполняется в ветке, в которую мы хотим включить файл)
После выполнения этой команды восстановленный файл будет существовать в исходном местоположении (которое должно быть отправлено)
git checkout master path/to/the/file.bin
так что вы можете просто восстановить этот файл без потери каких-либо других изменений, которые вы могли сделать. PS: это должен быть принятый ответ ...
Если вы установили ToroiseGIT, просто выберите пункт "Revert..." для всплывающего меню родительской папки.
Я также удалил все мои файлы случайно и восстановил, используя следующую команду:
$ git config alias.unstage
$ git checkout HEAD^ *
У меня была такая же проблема, однако ни одно из вышеперечисленных решений не работало для меня.
То, что я закончил, было:
- создать пустой файл с тем же именем
- сравнить этот файл с его местной историей
- скопировать историю в пустой файл.
1.Найдите это конкретное сообщение, к которому вы хотите вернуться, используя:
git log
This command will give you a list of commits done by you .
2. Повторите попытку с помощью:
git revert <commit id>
Теперь у вас локальная ветвь будет иметь все файлы, в частности
git checkout .
работал бы нормально.