git branch master擦除我的所有工作如何还原它

时间:2017-10-25 15:12:03

标签: git

我经常用

来改变
ADODB.RecordSet

adOpenStatic

有两周我发现分支,所以我在该分支中创建了一个分支和代码。现在我执行git add * 并且我丢失了很多文件(有分支创建之前的文件被删除) 这是毁了1年的工作。 检查分支主机后,我的分支名称test被删除了(我不知道怎么可能) 我已经用recuva检查了文件完全不和。 (对不起我的英语不好) 由@underscore_d解决:

git commit -m "message"

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

git checkout master

所以我输入

1) git reflog

然后把我的所有文件都归还。

3 个答案:

答案 0 :(得分:0)

git checkout master 

将您的工作副本更改为主分支 - 您的其他分支仍在那里,您只需要将工作副本更改回它。

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

答案 1 :(得分:0)

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

git checkout my_branch

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

git checkout master
git merge my_branch

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

答案 2 :(得分:0)

所以,这听起来像是,而不是承诺分支,你承诺分离HEAD。因此,签出master意味着您已经“失去了”#39}。对您一直在处理的提交的引用。

但并非一切都没有丢失。 git会记录它所见过的引用,并且这些内容永远不会丢失,直到垃圾收集运行并删除已经配置的保留期孤立的内容。您可以通过运行git reflog来查看此内容。

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

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