git无法push,! [rejected]main -> ma

2023-07-19  本文已影响0人  叶猜

push的时候发现明明是该在main分支上,却不在,导致无法push到origin main

git branch结果:

- (no branch, rebasing main)

- main

此时我顺手就 git checkout main

于是我的代码们就消失了...

错误码

 ! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'git@github.com:XXXXXX.git'```

搜索解决答案:

a. 使用 git reflog 查看提交历史,找到之前的 HEAD 位置,然后使用 git reset 恢复代码。

   # 查看提交历史,找到之前的 HEAD 位置
   git reflog

   # 假设 HEAD 回到之前的第一个提交,使用 git reset 恢复代码
   git reset --hard HEAD@{1}

b. 如果您之前没有执行过提交,可以使用 git stash 命令暂存您的更改,然后再切换回 main 分支。

   # 暂存当前的更改
   git stash

   # 切换回 main 分支
   git checkout main

   # 如果需要,可以还原之前的更改
   git stash apply

我的解决过程

我是执行过提交的,所以走以下步骤:

事故原因

为什么我明明在main分支,会跑到HEAD呢

在 Git 中,当您使用 git checkout 命令切换到一个特定的提交时,而不是切换到一个分支名称,就会进入“游离状态”(detached HEAD)。这时,HEAD 不再指向任何分支,而是直接指向一个具体的提交

所以可能是久久没上班,重新熟悉git命令时跑了一个空git checkout

ToT

上一篇 下一篇

猜你喜欢

热点阅读