git восстановить удаленный файл, где фиксация не была сделана после удаления
Я удалил некоторые файлы.
я еще не совершал.
Я хочу сбросить рабочее пространство для восстановления файлов.
Я 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 .
сбросить рабочее пространство до HEAD
?
20 ответов
выход говорит вам, что нужно делать. git reset HEAD cc.properties
etc.
это будет unstage операции rm. После этого запустите git status
снова скажет вам, что вам нужно сделать git checkout -- cc.properties
чтобы вернуть файл.
обновление: У меня есть это в моем файле конфигурации
$ git config alias.unstage
reset HEAD
который я обычно использую для unstage вещей.
вы устроили удаление, поэтому вам нужно сделать:
git checkout HEAD cc.properties store/README store/cc.properties
git checkout .
только проверяет из индекса, где удаление уже было выполнено.
восстановить все unstaged удаление сразу, автоматически, без указания каждого один путь:
git ls-files -d | xargs git checkout --
восстановить все поставил удаление сразу, автоматически, без указания каждого один путь:
git status | grep 'deleted:' | awk '{print }' | 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, чтобы захватить все файлы.
эта команда сбросит голову и unstage все изменения:
$ git reset HEAD .
затем выполните это, чтобы восстановить все файлы:
$ git checkout .
затем, делая статус git, вы получите:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
вы можете посмотреть этой
это касается случаев, когда вы использовали
git checkout -- .
прежде чем что-то совершить.
вы также можете избавиться от созданных файлов, которые еще не были созданы. А ты их не хочешь. С :
git reset -- .
нашел это сообщение, ища ответы о том, как удалить файл, который был удален в моем рабочем каталоге после слияния из другой ветви. После слияния коммит еще не был сделан. Поскольку это было слияние в процессе, я не мог просто добавить его обратно, используя:
$ git reset <commitid#-where-file.cpp-existed> file.cpp
мне пришлось сделать еще один шаг в дополнение к сбросу, чтобы вернуть файл:
$ git checkout -- file.cpp
использовать git ls-files
для проверки удаленных(-d) или измененных (- m) файлов.
git checkout $(git ls-files -d)
посмотреть как я могу восстановить только измененные файлы на git checkout?
Если вы не совершили никаких изменений, все, что вам нужно сделать, это спрятать эти изменения, и вы вернетесь к последней рабочей фиксации.
git stash
git stash clear
git clean
Если вы установили ToroiseGIT, просто выберите " Revert..."пункт меню всплывающего меню родительской папки.
для меня то, что работал git checkout {SHA1 of commit with version to restore} "{path to file to restore}"
git checkout 5a6b3179e58edff9c90326b9a04284b02fd67bd0 "src-ui/views/includes/radar.pug"
(выполняется в ветке, в которую мы хотим, чтобы файл вошел)
после выполнения этой команды восстановленный файл будет существовать в исходном расположении (которое необходимо будет вернуть)
У меня была та же проблема, однако ни одно из решений работал для меня.
Я решил было:
- создайте пустой файл с тем же именем
- сравните этот файл с его историей
- скопируйте историю в пустой файл.
Я также удалил все мои файлы и восстановить с помощью следующей команды:
$ 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>
теперь у вас локальная ветвь будет иметь все файлы в частности