Мне странно, что каталог .git
не был бы восстановлен в вашей резервной копии.С точки зрения вне git, файлы в этом каталоге ничем не отличаются от любых других файлов.Я хотел бы быть уверен, что понял причину этого, прежде чем решить, что делать дальше.
Но поскольку вы ссылаетесь на «обновленный локальный репозиторий», я предполагаю, что вы уже предприняли шаги для созданияновое git-репо на локальном пути, независимо от того, что происходило раньше [1].В этом случае у вас предположительно есть что-то вроде этого:
On Bitbucket
A -- B -- C -- D <--(master)
Locally
E -- F <--(master)
Я предполагаю, что первый коммит в вашем новом репо является более новым состоянием каталога, по сравнению с последним коммитом, который был сохранен в BitBucket.
Итак, первое, что нужно сделать, - настроить хранилище bitbucket как удаленное
git remote add origin url://of/remote/repo
, где URL-адрес будет тем же, который вы использовали бы для клонирования.Тогда
git fetch
и у вас есть локально
A -- B -- C -- D <--(origin/master)
E -- F <--(master)
Далее вам нужно re-parent
E
на D
.См. git filter-branch
docs (https://git -scm.com / docs / git-filter-branch ), конкретно относящийся к опции --parent-filter
.Есть несколько примеров, показывающих различные способы выполнения этой задачи.
[1] Если я неправильно читаю ваше заявление, а вы еще не воссоздали локальный репо, это на самом деле проще, потому что это означаетнет локальной истории, в которую можно привить. В этом случае вы можете сделать что-то вроде
cd /path/of/local/repo
git clone -n url://of/remote/repo old-repo
mv old-repo/.git .
rmdir old-repo
Затем поставить и зафиксировать ваше текущее состояние.Это немного круто, пересаживая папку .git
вот так;но, похоже, он работает в моих тестах, и я не знаю причин, по которым он должен потерпеть неудачу.