恢复由于头部分离而意外丢失的提交

时间:2019-06-15 23:07:09

标签: git branch

切换到另一个分支后,我丢失了代码(以为我推送了它,但是头部分离了)

我从母版转到了原点/分支 在那里做了一些工作 然后我不得不快速修复大师中的某些内容,所以我做了 git添加-A git commit -m“一些提交” git推 git checkout master

我做得非常快,所以我没有读到关于头部脱离的消息...因此,当我切换回某个分支时,我的更改不存在了... 我的更改丢失了还是有办法恢复?

2 个答案:

答案 0 :(得分:3)

不,您的提交不会丢失,这时任何分支都不会引用它(因此,它是垃圾收集的候选对象),但是reflog会保留一段时间的引用(默认为90天,但是您可以检查配置条目gc.reflogExpire),以便可以恢复它。

如何?第一种可能的方法

条件:仅当您的终端仍处于打开状态且具有先前操作的输出时。

如果是这样,您将可以轻松发现提交的哈希值:

git commit -m "Useful message here"
[master ec470f4] Useful message here
 1 file changed, 1 insertion(+), 1 deletion(-)

此时只需重新创建一个分支:

git checkout -b recovered-branch ec470f4

如果出于任何原因,您没有有此机会(终端关闭,在此期间进行了clear的任何操作),请不要担心:

第二种方法,reflog

git reflog

列出了HEAD的所有先前位置,因此只需获取所需的提交哈希并使用相同的命令来重新创建分支。

答案 1 :(得分:2)

只需检查区域并找到提交并使用该ID来创建新分支或移动现有分支

git reflog
git branch -f some-branch the-id-of-the-revision