假设我的历史记录如下:
A - B - C - D(主分支)
如果我执行
A - B(主分支)
问题在于,
那么我该如何回到D呢?
A - B - C - D(主分支)
如果我执行
git reset B
命令,我会得到以下结果:A - B(主分支)
问题在于,
git log
现在只显示从A到B的历史记录,我无法再看到C和D了。那么我该如何回到D呢?
你可以使用git reflog
命令来查看D。
你可以阅读这篇文章了解更多信息。
只有在运行 git gc --prune 命令时才会真正删除提交记录(所以要小心!)。
如果你现在在一个仓库中运行 git reflog 命令,你会看到很多类似于以下的更改:
c5c3a82... HEAD@{0}: pull origin featureB: Merge made by recursive.
49d0608... HEAD@{1}: reset --hard HEAD^: updating HEAD
3ed01b1... HEAD@{2}: pull origin featureA: Merge made by recursive.
49d0608... HEAD@{3}: pull origin bugfixJ: Merge made by recursive.
854d44e... HEAD@{4}: commit: Add more cowbell to foo.c
6dbc22d... HEAD@{5}: pull origin bugfixI: Merge made by recursive.
9bdb763... HEAD@{6}: commit: Remove weevils
8518f9d... HEAD@{7}: checkout: moving from wickedfeature to master
这些行可以分成四个部分:好的,找到了。
你可以使用 git reflog
命令。
我以前不知道它是干嘛用的,但现在我能看出来,这是记录所有 HEAD 指向的参考的日志。