0

一年前,我开了一个 Bitbucket 帐户,并用它来跟踪本地文件夹的版本(在我的个人笔记本电脑上)。

从那以后我的笔记本电脑“死了”,我买了一台新的。我的文件已备份在 Mega 云上,因此它们已成功恢复。虽然,.git 文件没有恢复。现在我想将更新的本地存储库连接到旧的过时 Bitbucket 存储库。

如何在不删除当前本地更新的情况下做到这一点?

感谢你的帮助!

4

1 回答 1

1

令我感到奇怪的是,该.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] 如果我误读了您的陈述,而您还没有重新创建本地 repo,那实际上更简单,因为这意味着没有本地历史可以移植。在这种情况下,您可以执行类似的操作

cd /path/of/local/repo
git clone -n url://of/remote/repo old-repo
mv old-repo/.git .
rmdir old-repo

然后暂存并提交您当前的状态。像这样移植文件夹有点麻烦.git;但它似乎在我的测试中有效,我不知道它应该失败的原因。

于 2018-05-31T12:47:48.217 回答