我很奇怪.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 与您用于克隆的 URL 相同。那么
git fetch
你有本地
A -- B -- C -- D <--(origin/master)
E -- F <--(master)
接下来您需要将re-parent E 转到D。请参阅 git filter-branch 文档 (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文件夹有点麻烦;但它似乎在我的测试中有效,我不知道它应该失败的原因。