我在一个旧的提交上提交了,我怎么能找到那个提交?

  • 本文关键字:提交 怎么能 一个 git github
  • 更新时间 :
  • 英文 :


我正在做一些更改,我提交了一个旧的提交,我在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是如何随时间演变的。如果没有参数,它将显示HEADref(当前签出的提交)的最后状态。

您应该能够在那里看到您的分离提交。首先找到你的checkout out提交,然后上面的一行应该包含"commit (amend): Login corrections",从这个提交的提交散列开始。您还可以使用grep来快速限制输出:git reflog | grep -3 'Login corrections'.

一旦你有了,你可以从那个提交创建分支:git branch recover-detached $commithash_from_reflog。然后,签出这个分支,检查它的历史,挑选,重基,或者合并它。

最新更新