代码之家  ›  专栏  ›  技术社区  ›  Shayne Jonas

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

  •  1
  • Shayne Jonas  · 技术社区  · 10 年前

    请帮帮我!我犯了一个愚蠢的错误。当我点击此链接时: 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 回复  |  直到 10 年前
        1
  •  2
  •   Philippe    10 年前

    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>
    

    你有最新的密码 已提交(并推送) 你的本地更改消失了。。。

        2
  •  0
  •   ZhiQiang Fan    10 年前

    我是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

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

    现在,切换到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:将所有示例替换为真实示例