恢复由于分离的头而意外丢失的提交

Restoring accidentally lost commit due to detached Head

切换到另一个分支后我的代码丢失了(以为我推了它,但是头被分离了)

我从 master 切换到 origin/somebranch 在那里做过一些工作 然后我不得不快速修复 master 中的一些东西,所以我做了 git 添加-A git 提交 -m "some commit" git 推 git结帐大师

我做的挺快的,所以我没有看到关于head被分离的消息...所以当我切换回somebranch时,我的更改不在那里... 我的更改丢失了还是有办法恢复?

只需检查 reflof 并找到您的提交并使用该 ID 创建新分支或移动现有分支

git reflog
git branch -f some-branch the-id-of-the-revision

不,你的提交没有丢失,此时它不会被任何分支引用(因此,垃圾收集的候选者)但 reflog 会保留对它的引用一段时间(默认为 90 天) ,但您可以检查您的配置条目 gc.reflogExpire),这样您就可以恢复它。

怎么样?第一种可能的方法 :

条件:仅当您的终端仍处于打开状态并显示先前操作的输出时。

如果是这样,您将能够轻松发现提交的哈希值:

git commit -m "Useful message here"
[master ec470f4] Useful message here
 1 file changed, 1 insertion(+), 1 deletion(-)

此时重新创建一个分支:

git checkout -b recovered-branch ec470f4

如果您出于任何原因没有这个机会(终端关闭,同时做了clear,任何事情),不用担心:

第二种方法,reflog

git reflog

列出了 HEAD 之前的所有位置,因此只需在那里获取您想要的提交哈希并使用相同的命令重新创建您的分支。