背景: 我有一个本地存储库,它有一个远程。一段时间以来,一切都进展顺利。我在 Mac 上进行开发并使用 GitX。在我要描述的问题之前,我 5 天前已经推送到远程,并且从那时起有 10 次本地提交未推送。
问题: 我在 GitX 中进行了提交,编写了提交消息,然后按下了“提交”的键盘快捷键,就像我做过很多次一样。(至少,所以我认为——我做得很快,所以也许我偶然做了一些不同的事情——不确定。)然后发生了以下情况:
- GitX 现在显示 master 与 origin/HEAD 和 origin/master 完全断开。(在此处查看部分 GitX 窗口的屏幕截图。)
- GitX 也没有显示自上次推送以来 10 次提交的记录。(最近 10 次提交不在该屏幕截图的列表中。)
- GitX 似乎表明 master 的当前位置没有历史记录,就好像repo 中的所有文件都添加到了那个(最近的)提交中。(屏幕截图中未显示。)
git log
从命令行仅列出一个条目,即我刚刚进行的最后一次提交。git log -g
从命令行列出完整的历史记录,包括 10 个丢失的提交和最近的一个。
我不知道发生了什么,也不知道为什么会发生上述 5 件事。我不明白git log
和git log -g
(又名git log --walk-reflogs
)之间的区别,但它似乎是我缺少的数据所在的位置。
问题:如何取回仅出现在 10 中的 10 次提交git log -g
?我怎样才能将主人重新附加到历史的其余部分?究竟是什么导致了这一切?