从Bitbucket(git)的远程仓库恢复已删除的分支

28

我想恢复我们在Bitbucket上共享的远程代码库中被删除的一个分支。我知道在本地代码库中可以使用reflog实现。

那么,在远程代码库中,我该如何操作呢?


这个答案是否与你的问题相关?链接 - Srikanth Venugopalan
不好意思,我的系统历史记录中没有这些分支。 - OpherV
4个回答

43

四年后...

我遇到了这个答案,因为我在bitbucket.org的用户界面中删除了一个团队成员想要恢复的分支。

我发现git branch --remote会显示所有在origin上的分支,即使是通过UI删除的分支也一样。

我使用git checkout origin/<branch_name> -b <branch_name>将origin分支本地检出,然后执行git push -u origin <branch_name>,它就再次出现在UI中了。


2
这很荒谬,但它起作用。
  1. 这种方法在github上也适用吗?
  2. 如果一个分支从控制台中删除(而不是从Bitbucket UI中删除),我们是否仍然可以通过git branch --remote看到已删除的分支?
- Yury Bondarau
1
  1. 是的,只要您没有修剪远程分支,这也适用于GitHub。
  2. 如果您在Bitbucket或GitHub中修剪了远程分支,我相信该分支将永久消失。
- Michael
这个可以。我在bitbucket.com上不小心删除了一个分支,然后使用远程操作创建了一个新的相同的分支。 - Pranav Nandan
1
只有在您拥有最新的本地分支副本时,此方法才有效。如果没有,请勿从Bitbucket UI中删除该分支,否则此方法将无法使用。但是,如果您有本地副本,则可以直接执行git checkout <branch name>然后执行git push -u origin HEAD而无需创建新的分支或其他任何内容。对于所有其他情况,VonC的想法是正确的。 - C0D3LIC1OU5
真是救命稻草啊!Bitbucket的“合并后删除”功能让我意外地删除了拥有整个团队4-5个月工作的“开发”分支。我以为我完蛋了。 - Arun Gowda
显示剩余2条评论

7

reflog仍然是答案,只是您无法访问远程(Bitbucket)上的reflog

这意味着您需要向Bitbucket支持部门写信以便他们恢复所需的内容。


1
是的,这种方法完全有效。但我建议在执行其他两个还原分支的命令之前,先使用此命令进行检查:
git branch --remote 

如果您在上述命令的输出列表中看到了您的分支,请放心执行以下操作:
git checkout origin/<branch_name> -b <branch_name>
git push -u origin <branch_name> 

哪种方法有效?你是指的 Michael 的回答 吗? - Trisped

0

我不小心在BitBucket Cloud中删除了一个分支。
我很失望,因为BitBucket没有将其保留为“已删除”分支(回收站样式)。
好吧,显然他们有点这样做;他们只是不在他们的网站上显示已删除的分支。

解决方法:
  1.) 更改一些无害的东西。
        (比如在文件中添加一个空格,你知道它会被忽略。)
  2.) 然后从本地机器检入并推送该分支。
        (最好是从删除分支的最后一次检入的地方)。
令我惊讶的是,它毫无问题地工作了,分支就像什么都没有发生过一样恢复了。

附注:
奇怪的是,为了合并代码,我必须得到其他人的许可,
但删除代码不需要监督(至少我们的组织是这样设置的)。
但对于混淆我的分支完全是我的错。
为我们处理的每个小问题创建分支对我来说是新的和痛苦的,但我明白为什么要这样做。
我的同事说她会等到我们发布之前清理任何死分支。
吸取教训。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接