之前在学习Git的时候,是看廖雪峰大神的教程来着。
然后在做作业的时候,要用到版本回退,这时候灵机一动,想到廖神教程中有教git reset --hard commit_id
这个命令有个前提,你没有把本地仓库推送到远程。然而我没有注意到这一点,于是GG,因为远程库分支受保护,不允许强行回退。
然后啊然后,导师就说一般在实际合作中是不能用git reset
命令的,会造成很多不可描述的严重后果。一般都是用git revert
命令来进行版本回退的。
git revert
这个命令很陌生,网上虽然有很多介绍,但基本都是复制粘贴的,一旦某点有困惑,就要花很多时间找答案。(官方文档在这)
一开始我以为这个命令和reset一样,都是指定commit_id之后就会回滚到该id的内容,只不过是HEAD并没有往后走,而是又重新生成了一个提交。
但在实践的过程中发现不对,git revert commit_id之后并不会回滚到该id的内容,而是将该id的内容给逆向操作一遍,比如说,a操作添加了“haha”,commit了a,b操作添加了“xixi”,commit b。现在想回滚到只添加了“