切换到另一个分支后,我丢失了代码(以为我推送了它,但是头部分离了)
我从母版转到了原点/分支 在那里做了一些工作 然后我不得不快速修复大师中的某些内容,所以我做了 git添加-A git commit -m“一些提交” git推 git checkout master
我做得非常快,所以我没有读到关于头部脱离的消息...因此,当我切换回某个分支时,我的更改不存在了... 我的更改丢失了还是有办法恢复?
答案 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