【问题标题】:git branch master erase all my work how to revert itgit branch master 删除我所有的工作如何恢复它
【发布时间】:2017-10-25 15:12:02
【问题描述】:

我经常提交我的更改

git add *

git commit -m "message"

我发现分支有两个星期,所以我在该分支中创建了一个分支和代码。现在我执行git checkout master,我丢失了很多文件(分支创建之前的文件已被删除) 这是毁了1年的工作。 检查分支 master 后,我的名为 test 的分支被删除了(我不知道这怎么可能) 我已经用 recuva 彻底检查了文件分配器。 (对不起我的英语不好) 由@underscore_d 解决:

1) git reflog

我获得了最后一个 HEAD 的列表

c92fba6 HEAD@{0}: checkout: moving from bc679831379ae324856d02492aecdeb0abffff8d
 to master
bc67983 HEAD@{1}: commit: bug fixe #32
fcaccea HEAD@{2}: commit: bug fixe #31
009579a HEAD@{3}: commit: bug fixe #30

所以我输入

2) git checkout bc67983

然后我把我所有的文件都拿回来了。

【问题讨论】:

  • 我也有 git gui 和 git gui 说一切都很好。点表示本地文件夹,星号表示文件夹中的所有文件。
  • checkout 不太可能删除之前的 HEAD 分支,或者您之前添加到 git 的对象现在立即丢失并且不再被一些分支或悬空提交。发布git branch 的输出和git reflog 的(前25 行左右)。
  • 非常感谢@underscore_d 的回复,我可以将您标记为已接受。我正在编辑我的原始帖子以解释我如何解决它
  • 你现在应该做的是git reset某个分支指向你正在恢复的最新提交,否则我认为你仍然会在detached HEAD上并且可能会进入稍后再次出现同样的问题...

标签: git


【解决方案1】:

所以,听起来,您不是提交到一个分支,而是提交到一个分离的HEAD。因此,签出master 意味着您“丢失”了对您一直在处理的提交的引用。

但一切都没有丢失。 git 保留它所看到的 refs 的日志,并且这些不会永远丢失,直到垃圾收集运行并删除已在配置的保留期之外孤立的东西。您可以通过运行git reflog 来查看此内容。

幸运的是,通过这样做,正如您所见,即使不属于任何分支的提交仍然保留在 git 的数据库中,您可以查看它们。

你现在应该做的是 git reset 某个分支指向你正在恢复的最新提交,否则你仍然会在 detached HEAD 上,并且以后可能会再次遇到同样的问题......因此,如果您希望 master 指向您恢复的提交,请运行 git checkout master && git reset --hard [the hash]。或者从detached HEAD 使用git checkout -b phew_that_was_a_close_one 创建一个新分支。

【讨论】:

    【解决方案2】:
    git checkout master 
    

    将您的工作副本更改为主分支 - 您的另一个分支仍然存在,您只需将工作副本更改回它。

    git checkout <branchname> 应该这样做 - 之后您可能需要将您的分支内容合并到您的主人。 git help checkout git help merge 应该会进一步帮助您。

    【讨论】:

      【解决方案3】:

      你签出了 master,所以 git 将你的工作树恢复到最后一次提交给 master 的状态。如果您想返回反映您提交给分支的所有内容的状态,请查看该分支。 (你没有说分支的名称;我猜它是my_branch。)

      git checkout my_branch
      

      如果您想将您在分支上所做的更改合并到master,您可以合并。

      git checkout master
      git merge my_branch
      

      将来,您可能想在尝试使用之前了解某个功能,而不仅仅是“发现”它。

      【讨论】:

      • 谢谢,但是我的另一个分支已经不存在了
      • 您在原始问题中没有指定删除另一个分支。这是怎么发生的?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 2020-08-10
      • 2013-05-01
      相关资源
      最近更新 更多