Восстановление файлов, удаленных GIT (только в оригинальной копии)
Я работал над проектом, и для того, чтобы создать резервную копию, а также синхронизировать мою тестовую среду с производственной средой, я создал GIT-репозиторий (в GitHub).
У меня в рабочей среде много файлов, которые мне не нужны и не нужны, в репозитории или тестовой среде. Однако, когда я впервые синхронизировался, я забыл включить их в .gitignore
файл (ы). Поэтому я добавил соответствующие строки в .gitignore
файлы и удалил файлы в тестовой среде.
Проблема в том, что я только что синхронизировался с производственной средой, и все эти файлы были удалены. Ни один из них не является критически важным файлом, поэтому, если я не смогу их восстановить, это не будет большой проблемой. Некоторые даже мусор. Однако я считаю, что многие из этих файлов удобно иметь при себе, поэтому я хотел бы восстановить их только в рабочем состоянии.
(это не пара файлов, а несколько сотен)
PS У меня все еще есть некоторые файлы, которые мне нужно очистить из репозитория, однако это важные файлы в работе. Как правильно удалить их в хранилище, не удаляя их в рабочей среде?
2 ответа
Вы можете сделать резервную копию локального каталога репозитория, чтобы в будущем синхронизация с производственным репозиторием не оказала влияния, поэтому вы можете получить файлы.
После резервного копирования вашего локального репозитория выполните git log
в резервном каталоге, чтобы просмотреть историю коммитов и найти коммит, в котором эти файлы были удалены.
пример
$ git log
commit 7b37eb6bd946b1fcb28549e83d5bb17d9eee8b56
Author: A committer <committer@somewhere.com>
Date: Wed Nov 20 21:56:09 2013 -0200
This commit was one after the commit in which files were deleted.
commit fe14476246c235e674b1e741745ed855454c0105
Author: A committer <committer@somewhere.com>
Date: Wed Nov 20 21:55:18 2013 -0200
In this commit files were _deleted_.
Тогда выпускают git revert [commit number which deleted files]
(т.е. git revert fe1447
) и фиксация удаленных файлов будет возвращена, и эти файлы вернутся.
Интересный учебник по git - http://www-cs-students.stanford.edu/~blynn/gitmagic/, не слишком тяжелое чтение и полон хороших примеров.
Если совершить abcdef
это тот, где вы удалили эти файлы и добавили их в .gitignore
вы можете восстановить файлы, как они были в предыдущем коммите (обратите внимание на ^
что означает родителя этого коммита):
git checkout abcdef^ -- path/to/removed/file path/to/another/removed/file ...
Если вы делаете git status
Затем вы подготовите для фиксации (как новые файлы) только что восстановленные файлы.