如何恢复已删除的存储库和已删除的分支

时间:2016-04-23 20:27:42

标签: git openstack gerrit

请帮帮我!我犯了一个愚蠢的错误。当我点击此链接时:http://docs.openstack.org/infra/manual/developers.html

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

删除了分支

然后我还删除了克隆到我电脑的projectname:sudo rm -rf projectname

(项目名称来自命令:git clone https://git.openstack.org/openstack/<projectname>

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

由于

2 个答案:

答案 0 :(得分:2)

  

git branch -D mybranch

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

  

sudo rm -rf projectname

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

<强> What else can you do to recover it?

  

我看到OpenStack gerrit仍然显示已删除分支的更改

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

# Clone the project
git clone <url>

# checkout the desired branch
git checkout <branch>

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

答案 1 :(得分:0)

我是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/,右上方有一个小的下拉按钮,名为“下载”,点击它并选择第一个,结帐一个,然后点击右侧的小黑色按钮,这将把网址复制到你的粘贴板

现在,切换到你的shell窗口,只需粘贴它:

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:用你的真实替换所有例子