我已经从gitious转移到gitlab,当第一次推送到gitlab时,忘了也推送我的所有标签。
在旧的存储库中,由于在提交链提示处有一个标记,因此只能访问某些提交。由于新的repo没有推送标签,这些提交现在无法访问 - 实际上,它们甚至不再存在于我的本地或新的远程存储库中(可能是gc'ed)。 我希望我能以某种方式恢复这些提交而不会弄乱任何历史记录。情况如下:
A---B---C---D---E---F <-- master today
\
X---Y---Z
^
lost tag
我的磁盘上仍然有旧的本地存储库(与一个现在不可用的gitorious遥控器链接)以及我想要推送到新回购的提交X Y Z.
我将如何做到这一点?
答案 0 :(得分:0)
我已根据 nwinkler 的建议设法解决了我的问题:
在旧的本地回购中,我已将遥控器更改为新的回购并推送了所有标签:
git remote rm origin
git remote add origin [new repo URL]
git push --tags
(我想我可以使用set-url
但我从头脑中不知道这一点。)
有趣的是,这并没有推动失去的标签&#34;即使它存在于旧的本地回购中。我必须在本地现有标签上创建一个临时分支并将其推送
git checkout <lost-tag-which-exists-in-old-local>
git checkout -b temp-resurrect
git push -u origin temp-resurrect
git branch -d temp-resurrect
git push origin --delete temp-resurrect
在此之后,我可以看到提交X Y Z和新远程存储库(Web界面)中的标记,并拉出标记并提交到新的本地存储库。
我现在暂时搁置这个问题,万一有人找到解决问题的更好方法。