Восстановление файлов, удаленных GIT (только в оригинальной копии)

Я работаю над проектом, и для того, чтобы иметь резервную копию, а также синхронизировать свою тестовую среду с моей производственной средой, я создал репозиторий GIT (в GitHub).

У меня есть много файлов в моей рабочей среде, которые мне не нужны, ни хочу, в репозитории или в тестовой среде. Однако, когда я впервые синхронизировал, я забыл включить их в файл .gitignore. Поэтому я добавил соответствующие строки в файлы .gitignore и удалил файлы в тестовой среде.

Проблема в том, что я только что синхронизировался с производственной средой, и все эти файлы были удалены. Ни один из них не является критическим файлом, поэтому, если я не смогу их восстановить, это не будет проблемой. Некоторые даже мусор. Однако я считаю, что многие из этих файлов удобны, поэтому я хотел бы восстановить их только на производстве.

(это не пара файлов, а несколько сотен)

PS У меня все еще есть некоторые файлы, которые мне нужно очистить от репозитория, но это важные файлы на производстве. Каким будет правильный способ удалить их в репозитории, не удаляя их в процессе производства?

2 ответа

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

После создания резервной копии вашего локального репозитория выпустите git log in backed dir, чтобы просмотреть историю фиксации и найти фиксацию, в которой эти файлы были удалены.

пример

$ git log
commit 7b37eb6bd946b1fcb28549e83d5bb17d9eee8b56
Author: A committer <[removed_email]>
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 <[removed_email]>
Date: Wed Nov 20 21:55:18 2013 -0200

 In this commit files were _deleted_.
</[removed_email]></[removed_email]>

Затем выпустите git revert [commit number which deleted files] (т. git revert fe1447), и фиксация, которые удалили файлы, будет возвращена, и эти файлы вернутся.

Интересный урок о git - http://www-cs-students.stanford.edu/~blynn/gitmagic/, не слишком тяжелое чтение и множество хороших примеров.


Если commit abcdef - это тот, в котором вы удалили эти файлы и добавили их в .gitignore, вы можете восстановить файлы так, как они были в предыдущем выполнении commit (обратите внимание на .gitignore ^ который означает родительский .gitignore этого коммита):

git checkout abcdef^ -- path/to/removed/file path/to/another/removed/file ...

Если вы выполните следующий git status, вы будете поставлены для фиксации (в виде новых файлов) файлов, которые вы только что восстановили.

licensed under cc by-sa 3.0 with attribution.