我已使用此按钮签出
get checkout 586c90b5da800dbc322c097924bb6f80b6d9d5e5
是什么让我从头上移开了,然后又从那里做出了很多改变,所以为了使自己成为头,我做了
git reset --hard 586c90b5da800dbc322c097924bb6f80b6d9d5e5
现在可以了
git push
说
致命:您当前不在分支机构中。推动历史领先 恢复到当前(分离的HEAD)状态,请使用
git push origin HEAD:<name-of-remote-branch>
如果我愿意
git push origin header master
说
错误:src refspec标头不匹配。 错误:无法将一些参照推送到
'https://github.com/something/somerepo/
如果可以的话
git push origin master -f
它说一切都是最新的。
我如何才能推动对git repo进行了几处更改的当前头(此外,我已经完成了git reset --hard 586c90b5da800dbc322c097924bb6f80b6d9d5e5
)
答案 0 :(得分:1)
您的第一个签出命令将您置于“分离头”状态-您正在提交,但是那里没有分支(“头”)。这意味着您在那里进行的所有提交都在一个未命名的分支上。通常,虽然可行,但这并不是工作的好方法。
然后您将git reset --hard
返回该提交,但是由于没有分支指针,因此没有移动任何头。您的工作目录返回到commit 586c90,仅此而已。之后的提交仍然存在,但是没有指向它们的内容,因此最终将对其进行垃圾回收。请注意,此处您仍处于“头顶分离”状态。
现在,您尝试进行推送,但是您不在分支上。没有分支名称就无法推送;您只会将无名的提交推送到远程,并且它们最终也会在那里被GC,因为没有指向它们的消息。
您应该在这里创建一个分支名称-在586c90或提交的尖端(使用git log -n10 --all
查看所有标题,和/或滚动浏览Shell窗口以查看最后一个)提交ID,或使用git reflog
查看将提交ID重置回586c90的提交ID)。 git checkout -b new-branch
应该这样做。有了分支名称后,您可以将该分支推送到您的遥控器。