Как у изучающего Git, для меня не является сложной задачей что-либо сломать в своем проекте, да так, что восстановить уже не получится. Я умею обращаться с такими командами, как git status, add, commit, log, push и с ними ничего плохого никогда не происходило. Но тут еще бранчи, мерджи и конфликты, которые часто дают неожиданные результаты... Если умело с ними обращаться, будет сложно что-то сломать, но тут ключевое слово "умело", что не относится к моим навыкам в Git на данный момент. Я не вижу более эффективного способа практиковать Git, чем на реальных проектах.
Я как-то уже пытался работать с ветками, после чего появился конфликт; я пытался его исправить, но в итоге каким-то образом снес половину коммитов. Причем мне это приспичило сделать на середине своего реального проекта. После этого я надолго забыл про бранчи как страшный сон.
Так что знаю из своего опыта, что своими лапками я могу написать какую-то гадость в черном окне терминала, да так, что потом моему проекту и мне будет нехорошо. Все же, ветки - важная вещь, и вначале без боли тут никак. По этому было бы неплохо как-либо сохранять прошлые версии Git репозитория (не проекта, а именно репозитория). Получается "Git над Git".
Можно было бы копировать разные версии репозитория вручную по папкам, но... Серьезно?.. В итоге иметь десятки копий репозитория... Неудобно и непрактично.
test/
| copy1/
| | .git
| | index.html
| | ...
| copy2/
| | .git
| | index.html
| | ...
| ...
Также я пытался создать Git репозиторий-обертку вокруг репозитория с проектом, ну типа:
test
| .git <- это вспомогательный репозиторий
| main_repo <- папка проекта
| | .git <- это основной
| | index.html
| | ...
Но что-то не прокатило. Когда у меня было уже 5 чекпоинтов в оберточном репозитории, при попытке checkout в нем на один из прошлых, основной репозиторий никак не менялся.
Как я это делал?
0. Создал отдельную папку (test) под все это дело
1. В этой папке создал еще одну папку (main_repo), где будет основной репозиторий
2. Инициализировал репозиторий внутри main_repo
3. Инициализировал репозиторий-обертку в test и сделал коммит "checkpoint 0"
4. Создавал и изменял файлы в main_repo, делал в ней коммиты, ветки... Периодически коммитил (создавал чекпоинты) в оберточном репозитории
5. Накопилось 5 чекпоинтов и я в конце концов решил проверить, что у меня получилось.
6. Сделал checkout на четвертый чекпоинт. И нифига. Также переключился на нулевой, но тут тоже ничего не поменялось.
7. Понял что все фигня Миша это не работает и сказал своей директории "sudo rm -rf test"
8. Пошел просить помощи на Habr
Может быть, это все-таки можно реализовать с помощью Git? Может в нем и нет функций, направленных на такую задачу, но может быть это как-то можно обойти с помощью его других встроенных возможностей?