我是git的新手所以请耐心等待。在我的本地回购中,我已经在这个分支上工作了很长一段时间。我还没有真正推进,因为我是唯一一个参与这个项目的人。今天我终于决定将开发分支合并到主分支中,所以我做了git checkout master
。 (之前我做过git status
,无需添加任何内容。
切换到master之后,我决定回到我的开发分支,git checkout check_pburst
(check_pburst
是我的开发分支的名字),但现在我只能看到提交到我推送的时间。我有一种感觉,我在远程跟踪分支(也许?)。 git log
表明我的很多提交都没有显示。有没有办法可以看到我推过的提交时间?我希望我可以给你们更多的信息,但我不小心关闭了git bash,现在我收到的消息不再可见了。
如何恢复我的最新提交?
更新:在更多地研究这个问题之后,我做了一个git branch
并且只看到了两个分支(这是有意义的)。然后我做了一个git checkout tab tab
,它列出了更多的分支,但这些分支都没有我最近的提交。然后我做了一个显示我最新提交的git reflog
。我做了git checkout 25edfe8
。然后我做了git branch
并注意到我的最新提交是在分支Detached HEAD at 25edfe8
答案 0 :(得分:1)
从我们的讨论中可以看出,你曾经处于一个独立的头状态,而不是你的功能分支check_pburst
。将提交从分离状态转换为实际分支的标准解决方案是首先创建分支。从您的分离状态执行以下操作:
git checkout -b check_pburst_detached
此时,您已经创建了一个真正的Git分支,其中包含您所做的所有杂散提交。在这一点上谨慎的是通过将其推送到遥控器来备份你的工作:
git push origin check_pburst_detached
如果在任何后续点出现错误或迷路,您可以随时“重置”回这个分支,您知道该分支包含您的所有提交。
由于您希望实际保留功能分支中的所有分离提交,因此最好选择在check_pburst_detached
上重新定位check_pburst
,然后使用前者快进后者:
git checkout check_pburst_detached
git rebase check_pburst
完成rebase,然后快速合并check_pburst_detached
到check_pburst
:
git checkout check_pburst
git merge check_pburst_detached
此合并应该没有冲突,因为check_pburst_detached
分支应该在check_pburst
之前。您可以验证您的功能分支check_pburst
确实具有丢失的提交。