后台:我有一个有远程的本地存储库。一切都很顺利。我正在Mac上进行开发并使用GitX。在我要描述的问题出现之前,我已经在5天前推到了遥控器,并且从那以后有10个本地提交未被删除。
问题:我在GitX中提交了一个提交,写了它的提交消息,并按下了“提交”的键盘快捷键,就像我已经做了很多次一样。 (至少,所以我认为 - 我很快就做到了,所以也许我偶然做了一些不同的事情 - 不确定。)然后出现以下情况:
git log
仅列出一个条目,即我刚刚提交的最后一个提交。git log -g
列出了完整的历史记录,包括10个缺失的提交和最新的提交。我不知道发生了什么,或者为什么上述任何事情都发生了。我不明白git log
和git log -g
(又名git log --walk-reflogs
)之间的区别,但它似乎是我缺少的数据所在的位置。
问题:如何才能取回仅出现在git log -g
的10次提交?如何将主人重新连接到历史的其他部分?究竟是什么导致了这一点?
答案 0 :(得分:1)
我不知道gitX,但它看起来很像你创建了一个没有父母的提交。如果是这种情况,您需要按照以下步骤操作:
.git
存储库以防出现问题SHA1
)git reflog master
和gitk --walk-reflogs
或git log --walk-reflogs
的组合来查找先前提交的SHA(SHA2
)。git checkout -B master **SHA2**
以返回该提交git checkout **SHA1** -- .
以将更改恢复到工作目录中