我的提交被复制到另一个项目中,我的标签被移动了
My commits got copied in in another project and my tags got moved
我错误地将远程地址更改为另一个项目的地址,从而弄乱了我的 git 存储库。
现在的结果是,我从一个项目的所有提交都被复制到具有完全相同 ID 的另一个项目。
此外,原始项目中的所有标签都消失了,神奇地只在第二个项目中找到了。奇怪的是我只有在查看标签时才能看到它们,因为它们没有链接到任何分支。
**原始项目**
如您所见,两个项目中的提交 ID 相同
第二个项目
您在此处看到的那些具有相关提交的标签最初不属于该项目。
我想做的是理想情况下恢复原始项目中的所有标签(因此基本上将它们移回)并从第二个项目中删除所有那些额外的提交(有很多所以手动过程是一个有点耗时)。
我发现奇怪的是,如果我从第二个项目中删除标签,那么提交似乎也神奇地消失了
不是一个完整的答案,只是一些解释和建议如何解决这个问题。
如果两个项目的标签名称相同,那么在恢复它们的状态时应格外小心。通常,git 中的所有活动提交都应由另一个提交或提交或命名引用(即分支或标记)引用。因此,当您删除指向提交的分支或标记时,存在整个提交链可能成为孤立的并最终被垃圾收集的风险。即使某些提交消失了,他们的 sha-1 也可能会在一段时间内访问它们。检查 git reflog
他们。
在这些情况下,您应该做的第一件事是将损坏的存储库克隆到一个干净的本地文件夹中。因此,您至少会保留剩下的部分。您还应该寻找存储库的其他克隆(彻底检查您的硬盘并询问同事),这些副本很可能包含有关标签和分支的正确信息。在这种情况下,存储库备份可能会有很大帮助,但是地球上谁会在之前进行备份...开个玩笑。
一旦找到至少包含一些正确引用的存储库,您就可以强行将这些引用推送到损坏的远程存储库以及本地副本中。使用git push -f <tagname>
,但要格外小心。
我不确定 gitlab.com 是否提供备份服务,但您也可以询问他们是否有正确的存储库快照。当然,如果您的远程仓库位于 gitlab.com,而不是您自己的主机。
我错误地将远程地址更改为另一个项目的地址,从而弄乱了我的 git 存储库。
现在的结果是,我从一个项目的所有提交都被复制到具有完全相同 ID 的另一个项目。
此外,原始项目中的所有标签都消失了,神奇地只在第二个项目中找到了。奇怪的是我只有在查看标签时才能看到它们,因为它们没有链接到任何分支。
**原始项目**
第二个项目
我想做的是理想情况下恢复原始项目中的所有标签(因此基本上将它们移回)并从第二个项目中删除所有那些额外的提交(有很多所以手动过程是一个有点耗时)。
我发现奇怪的是,如果我从第二个项目中删除标签,那么提交似乎也神奇地消失了
不是一个完整的答案,只是一些解释和建议如何解决这个问题。
如果两个项目的标签名称相同,那么在恢复它们的状态时应格外小心。通常,git 中的所有活动提交都应由另一个提交或提交或命名引用(即分支或标记)引用。因此,当您删除指向提交的分支或标记时,存在整个提交链可能成为孤立的并最终被垃圾收集的风险。即使某些提交消失了,他们的 sha-1 也可能会在一段时间内访问它们。检查 git reflog
他们。
在这些情况下,您应该做的第一件事是将损坏的存储库克隆到一个干净的本地文件夹中。因此,您至少会保留剩下的部分。您还应该寻找存储库的其他克隆(彻底检查您的硬盘并询问同事),这些副本很可能包含有关标签和分支的正确信息。在这种情况下,存储库备份可能会有很大帮助,但是地球上谁会在之前进行备份...开个玩笑。
一旦找到至少包含一些正确引用的存储库,您就可以强行将这些引用推送到损坏的远程存储库以及本地副本中。使用git push -f <tagname>
,但要格外小心。
我不确定 gitlab.com 是否提供备份服务,但您也可以询问他们是否有正确的存储库快照。当然,如果您的远程仓库位于 gitlab.com,而不是您自己的主机。