我正在做一些更改,我提交了一个旧的提交,我在bash上执行history
,我发现了这个
1000 git checkout 7227... <-- I was on branch main and then I checkout on commit 7227...
--- Working on changes ---
1012 git commit -am "Login corrections" <-- I did not realize I was not working on main branch
1013 git pull origin main <-- I found out the problem and then I checkout to main
我移动到分支main
,现在我不知道在哪里找到我所做的消息Login corrections
的提交,如前所示。我试了试git log --all --decorate --oneline --graph
,如果我能找到任何相关的东西,但我没有找到任何东西。
无论何时执行git checkout $commithash
,您最终都会处于分离头部状态。这意味着你在分支上的不是——你所做的任何提交操作都将创建无法从任何分支访问的提交。
git log --all
只显示从任何ref(分支或标签)可访问的提交。这不包括"超脱的头"。提交。
但并非全输了。Git提供了reflog
命令来显示某个ref是如何随时间演变的。如果没有参数,它将显示HEAD
ref(当前签出的提交)的最后状态。
您应该能够在那里看到您的分离提交。首先找到你的checkout out提交,然后上面的一行应该包含"commit (amend): Login corrections",从这个提交的提交散列开始。您还可以使用grep来快速限制输出:git reflog | grep -3 'Login corrections'
.
一旦你有了,你可以从那个提交创建分支:git branch recover-detached $commithash_from_reflog
。然后,签出这个分支,检查它的历史,挑选,重基,或者合并它。