git push -f --mirror - 所有其他分支都去了哪里?

时间:2015-08-12 16:27:59

标签: git

我注意到在使用命令git push -f --mirror重命名我的本地分支后,它也在远程仓库上成功重命名,但所有其他分支都消失了。当我在BitBucket中查看远程仓库的分支时刷新我们的仓库时,它是巧合的(它们已经消失了,也许有人删除了它们)或者这个命令做了一些意想不到的事情,我还没有意识到< / p>

这个命令会做这样的事情,这意味着什么?发生了什么事?

2 个答案:

答案 0 :(得分:1)

这似乎是--mirror选项的记录行为:

  

--mirror

     

不是将每个引用命名为push,而是指定所有引用   refs /(包括但不限于refs / heads /,   refs / remotes /,refs / tags /)镜像到遥控器   库。新创建的本地引用将被推送到远程   结束,本地更新的refs将在远程端强制更新,   和已删除的参考号将从远程端删除。

删除的引用意味着&#34;不在本地存储库中的引用&#34;。

答案 1 :(得分:0)

对于偶然执行git push -f --mirror并删除许多分支之后和我一样绝望的人: 尝试掌握所有分支的最新ref / commit-hash。就我而言,我收到每个删除的分支的电子邮件,其中包含最新的参考。 然后对每个删除的分支执行git checkout -b <branch-name> <ref>,以在本地恢复它们。这样一来,这些更改就会丢失,而这些更改是在您上一次git fetch之后发生的 在本地恢复所有分支之后,您可以再次git push origin <branch-name>将其恢复到远程分支。