git – 如何解决“错误:无法推送到不合格的目的地:HEAD”

我有一个像A – >的修订版; B – > C – > D – > E.我试图回滚到C并将其作为新版本F提交,但似乎这不是正确的方法:我git checkout C然后做一些更改,然后git commit.但是,当我git push origin HEAD时,它会抱怨:

错误:无法推送到不合格的目的地:HEAD
目标refspec既不匹配遥控器上的现有引用也不匹配
以refs /开头,我们无法根据源ref猜测前缀.

正如this SO question所示,我尝试了git fetch -p origin,但它没有用.仍然有相同的错误消息.

我的问题是,如何摆脱这种情况并实现我的原始目标(回滚到C并将其提交给F)?

此外,正如这个问题所暗示的那样,我可以:

git rm -r .
git checkout HEAD~3 .
git commit

但我真的不想git rm -r.因为有很多未跟踪但有用的东西.

最佳答案 听起来你正在寻找git revert.在你的情况下:

git revert E D

之后你可以重新定义两个还原提交.

点赞