Восстановление файлов, удаленных 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 Затем вы подготовите для фиксации (как новые файлы) только что восстановленные файлы.

Другие вопросы по тегам