我在IDEA下退回某版本,后发现状态为游离,实际就是使用checkout
命令导致的。
git checkout
本质上是修改HEAD里面的内容来让它指向不同分支的,而HEAD文件指向的分支就是我们当前的分支,但是有时候HEAD不会指向任何分支,严谨的说是HEAD指向了一个没有分支名字的修订版本,此时恭喜你,已经处于游离状态了(detached HEAD).这时候我们在进行commit
操作不会提交到任何分支上去。
这时候,想推送到远程主分支上就不行了。
解决办法:
创建一个分支,使现在的版本有了分支
git checkout -b temp
然后删出原来的主分支master
git branch -D master
新创建的分支重命名为 master
git branch -m tempn master
最后强制提交到远程分支上,原来退回分支的版本之后的记录都没了,只有现在新提交的了
git push origin master --force