我有一棵这样的树:
commit10 - commit11 <-- master
|
|-- commit3 <-- topic/branch1
|
|-- commit4 <-- topic/branch2
git日志看起来像这样:
$ git log -n 4
commit4
commit3
commit11
commit10
当我在使用commit4时,commit3被合并到master并且在历史记录中更远,所以我想将topic / branch2的分支基础更改为master,如下所示:
commit10 - commit11 <-- master
|
\-- commit4 <-- topic/branch2
所以,我做了以下git命令:
$ git checkout topic/branch2
$ git rebase --onto master topic/branch2
First, rewinding head to replay your work on top of it...
现在我无法在任何地方找到commit4。
现在git log int topic / branch2如下所示:
$ git log -n 2
commit2
commit1
如果我去主分支并在git日志历史中查找30个条目,我无法找到提交。
我的commit4去了哪里?我如何取回它?
答案 0 :(得分:1)
感谢Makoto的评论,我能够通过查看reflog来解决这个问题。
我使用此restoring lost commits页面来恢复提交。结果证明,我的承诺被视为悬挂提交。
幸运的是,在我搞砸之前,我有了commit4的SHA1。所以我使用以下命令来证明git知道我的悬挂提示&#34;:
$ git fsck --lost-found
<lots of output>
dangling commit 0c990572fd1fd20a5db42141a7a4e0e6e97f6462
<even more output>
我还可以使用以下命令在reflog中看到commit4:
$ git reflog
根据前面提到的链接,您可以使用git merge或git checkout来恢复它。我使用了merge,因为链接说的更快。