我使用命令git checkout 1234568
查看旧提交。
之后我直接检查了另一个提交git checkout master
,然后我再次检查了主人git log --oneline
。但现在我的网站是旧版本。
我执行<?xml version = '1.0' encoding = 'UTF-8' standalone = 'yes'?><DATA>
<Time>2016-02-12T00:00:00.211Z</Time>
<Item>
<ID>123456789</ID>
<VAR1>897654564dDJUHFKHJHEU</VAR1>
</Item>
<Check>OK</Check>
</DATA>
后,我意识到我的两个最新提交都丢失了!为什么会发生这种情况并且可以恢复它们?
是不是因为我必须在结帐到另一次提交之前每次都要再次结账?
答案 0 :(得分:4)
在Git中,nothing is lost只要您已经提交 1 。
您可以使用reflog来获取master
一直指向的提交的日记,并说明:
git reflog master
在reflog中找到最新丢失的提交之后,您可以master
再次使用git reset
指向它}。
例如,让我们说最新丢失的提交是在reflog中的 4th 条目上。要在master
上恢复它,您会说:
git checkout master
git reset --hard master@{4}
其中master@{4}
指的是master
之前指向4个条目的提交。
请注意,在重置master
之前,您应确保您的工作目录 clean ,即您没有未提交变化。
<子> 1。好吧,差不多什么都没有。如果时间过长,无法访问的提交将最终删除。默认情况下,它们会保留30天,但您可以通过gc.reflogExpireUnreachable
选项更改此限制。