В качестве средства резервного копирования я помещаю структуру папок в репозиторий GIT, периодически внося новые изменения.В данном случае это большая часть папки $ HOME моего пользователя Linux.Поскольку резервная копия также включает локальные папки различных приложений (таких как почтовый клиент, браузеры и т. Д.), Естественно, даже через несколько секунд после недавнего git-push появляется целый ряд новых и незафиксированных изменений.
Так получилось, что я случайно уничтожил свою папку ~/.git/
(перезаписал ее папкой ~/.git/
из другого хранилища, так что она действительно исчезла).Я хотел бы восстановить его путем своего рода клонирования истории GIT с удаленного компьютера и сохранения связи всех файлов с их контрагентом хранилища, но не хочу, чтобы локальные файлы перезаписывались git-clone или git-pull.Я попытался восстановить папку .git/
, выполнив этот ответ , используя версию git fetch
затем git reset
.Все четыре команды завершены без ошибок.Однако, что касается моего локального репозитория, я застреваю в состоянии неопределенности:
git branch -av
показывает правильный удаленный мастер с правильным последним коммитом там - но только это;в списке нет локальной ветви / мастера.
git status
показывает:
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
[...]
Локальные файлы изменились с момента последней фиксации иgit-push не включается в список.
git log
показывает: fatal: your current branch 'master' does not have any commits yet
Я пытался сохранить локальные изменения, чтобыпотяните и снова примените тайник;однако git stash save
приводит к:
fatal: bad revision 'HEAD'
fatal: bad revision 'HEAD'
fatal: Needed a single revision
You do not have the initial commit yet
git checkout master
прерывается с:
error: The following untracked working tree files would be overwritten by checkout:
[...]
[... looooong list of files and folders ...]
[...]
Please move or remove them before you can switch branches.
Aborting
git rev-parse --abbrev-ref HEAD
приводит к "HEAD
"- он должен вывести имя ветви или" master
", если все было в порядке (я использую эту команду, чтобы текущее имя ветви отображалось в приглашении bash).
Может ли кто-нибудь указать мне полезное руководство о том, как «восстановить» локальный репозиторий и все ссылки на файлы без перезаписи (незафиксированных) изменений?Чего не хватает в ответе из другой темы ?