如何恢复被删除的仓库和被删除的分支

How to recover the deleted repository and the deleted branch

请帮帮我!我犯了一个愚蠢的错误。当我按照这个 link: http://docs.openstack.org/infra/manual/developers.html

我创建了一个新分支并对 Gerrit 视图进行了更改。在一个愚蠢的时刻,我用命令删除了分支:git branch -D mybranch

然后我还删除了克隆到我计算机上的项目名称:sudo rm -rf projectname

(项目名称通过命令获取:git clone https://git.openstack.org/openstack/<projectname>

现在我想恢复项目名称以便继续进行更改。我看到 OpenStack gerrit 仍然显示已删除分支的更改。请帮我找回它。

谢谢

git branch -D mybranch

此命令删除本地分支(仍然可以恢复。我们稍后再讲 - 下一段)

sudo rm -rf projectname

OOPS...您刚刚删除了存储库和本地数据以及已删除的分支(因此您无法再在本地恢复它)


What else can you do to recover it?

I see that OpenStack gerrit still displays the change for deleted branch

看起来您的远程存储库中有分支。
克隆项目,签出分支并继续您的工作。

# Clone the project
git clone <url>

# checkout the desired branch
git checkout <branch>

并且您拥有已提交(并推送)的最新代码您的本地更改已消失...

我是 OpenStack 的核心开发人员,这里有一个非常简单的解决方案,用于恢复 已上传但尚未批准 补丁,让我们举个例子:

我有一个补丁已经推送到gerrit:https://review.openstack.org/#/c/309710/

我的本地直接工作是:/opt/stack/aodh,分支名称是:fix-some-bug

然后出于某种原因我永久删除了工作目录,但是很容易恢复如果你有 gerrit 上的代码

cd /opt/stack && git clone https://github.com/openstack/aodh && cd aodh

现在,打开网络浏览器并转到 gerrit 网页,找到您的补丁:https://review.openstack.org/#/c/309710/,右上角有一个小下拉按钮,名为 "Download",单击它并选择第一个,结帐的,然后点击右侧的小黑按钮,它将url复制到你的粘贴板

现在,切换到你shellwindows,随便贴一下:

git fetch https://git.openstack.org/openstack/aodh refs/changes/10/309710/1 && git checkout FETCH_HEAD

您的补丁将被下载,您应该按照 shell 提示进行检查:git checkout -b fix-some-bug 以便您稍后切换到另一个分支而不会丢失您的代码

现在,你可以继续你的工作了,干杯!

PS: 将所有示例替换为您的真实示例