我的提交被复制到另一个项目中,我的标签被移动

时间:2016-05-03 15:53:08

标签: git gitlab

我把我的git存储库搞得一团糟,错误地将远程地址变成了另一个项目。

现在的结果是,所有来自一个项目的提交都被复制到具有完全相同ID的另一个项目中。

此外,原始项目中的所有标签都消失了,只能在第二个项目中找到。奇怪的是,如果我查看标签,我只能看到它们,因为它们没有链接到任何分支。

**原创项目** enter image description here 如您所见,两个项目中的提交ID相同

第二个项目 enter image description here 您在此处看到的具有相关提交的标签最初并不属于此项目。

我想要做的是理想地恢复原始项目中的所有标签(所以基本上将它们移回)并从第二个项目中删除所有那些额外的提交(有很多因此手动过程有点时间消耗)。

我发现奇怪的是,如果我从第二个项目中删除标签,那么提交似乎也会神奇地消失

1 个答案:

答案 0 :(得分:1)

不是一个完整的答案,只是一些解释和建议如何解决问题。

如果两个项目都有相同名称的标签,那么在恢复状态时应特别小心。通常,git中的所有活动提交都应该通过另一个提交或提交或命名引用(即分支或标记)来引用。因此,当您删除指向提交的分支或标记时,存在整个提交链可能变为孤立并最终将被垃圾收集的风险。即使一些提交消失了,他们的sha-1也可以访问一段时间。请检查git push -f <tagname>

在这些情况下,您应该做的第一件事是将损坏的存储库克隆到干净的本地文件夹中。因此,你将保留至少剩余的东西。此外,您应该寻找存储库的其他克隆(彻底检查您的硬盘驱动器并询问同事),很可能这些副本包含有关标签和分支的正确信息。在这种情况下,存储库备份可能会有很大帮助,但是谁在地球上之前进行备份 ......开个玩笑。

一旦您找到了至少包含一些正确引用的仓库,您可以强行将这些引用推送到损坏的远程仓库以及本地副本。使用{{1}}但要格外小心

我不确定gitlab.com是否提供备份服务,但您也可以询问他们是否有适当的存储库快照。当然,如果您的远程仓库位于gitlab.com上,而不是您自己的托管。