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?

575   20  
git

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 . только проверяет из индекса, где удаление уже было выполнено.

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

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

git ls-files -d | xargs git checkout --

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

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

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

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

предупреждение

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

Если вы используете

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, чтобы захватить все файлы.

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

$ 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 

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

 git checkout ./pathToDir/*

Если вы установили 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 checkout ./*

будет делать.

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

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

$ 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> 

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

Comments

    Ничего не найдено.