一次教训,没事不要乱push和pull,在本地库完全弄好以后再向远程库push 假设一开始你的本地和远程都是:
a -> b -> c
你想把HEAD回退到b,那么在本地就变成了:
a -> b
这个时候,如果没有远程库,你就接着怎么操作都行,比如:
a -> b -> d
但是在有远程库的情况下,你push会失败,因为远程库是 a->b->c,你的是 a->b->d
两种方案:
push的时候用--force,强制把远程库变成a -> b -> d,大部分公司严禁这么干,会被别人揍一顿
做一个反向操作,把自己本地变成a -> b -> c -> d,注意b和d文件快照内容一莫一样,但是commit id肯定不同,再push上去远程也会变成 a -> b -> c -> d
简单地说就是你无法容易地抹去远程库的提交信息,所以本地提交怎么都行,push前想好了
1.如果你用的rm删除文件,那就相当于只删除了工作区的文件,如果想要恢复,直接用**git checkout -- (file)**就可以
2.如果你用的是git rm删除文件,那就相当于不仅删除了文件,而且还添加到了暂存区,需要先git reset HEAD (file),然后再git checkout -- (file)
3.如果你想彻底把版本库的删除掉,先git rm,再git commit 就ok了