2017-02-17 10 views
3

Как восстановить случайно удаленный файл и папку в git после нажатия. Ниже приведен сценарий.Восстановить удаленный файл с историей в git

  1. Случайно удалена папка с одним файлом и сделана куча изменений в других файлах.
  2. Теперь вот все эти изменения. Таким образом, этот push имеет удаленную папку вместе с другими измененными файлами.
  3. Кроме того, было еще несколько нажатий.

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

+0

Git не имеет * есть * "история файла". Git имеет * фиксацию истории *. Восстановите файл (ы), и ваша история говорит: «commit K удалил некоторые файлы, а затем зафиксировал R, создав новые файлы с тем же именем и тем же содержимым, что и раньше». Это как можно ближе. Используйте ответ Райана ниже, чтобы получить файл (ы) назад. – torek

+0

Если вы не использовали git для их удаления, вы можете сбросить рабочее пространство, чтобы вернуть их. Вы уверены, что они удалены? – osowskit

+0

@osowskit Что вы подразумеваете под «если вы не использовали git для удаления». Мой вопрос сам "как восстановить, если я удалил файл и нажал удаленный файл?" – Rams

ответ

5

Несомненно, просто проверьте это из фиксации, где он существует. Если совершить что удалили файл верхушка все, что вы сейчас проверили, что это HEAD^ (коммит позапрошлом):

git checkout HEAD^ -- path/to/file 

Тогда вы можете совершить и толкать его.

+1

Вы можете заменить HEAD^на SHA фиксации, и это также сработает. –

1

Предполагая, что вы в настоящее время находитесь на главной ветке, простое решение - найти GIT SHA1 из последней фиксации (используя что-то вроде gitk help) с удаленным файлом, который вы хотите.

Выполните команду

git checkout <GIT SHA1 value> 

Скопируйте содержимое файла в блокноте (или любой текстовый редактор)

Выполнить команду

git checkout master 

Воссоздать файл с содержимым из блокнота

+0

Будет ли это также вернуть историю файла? – Rams

+0

Да, он должен, если файл находится в том же месте с тем же именем –