问题一:代码区(工作区)的撤销(代码还没有commit)
问题二:如果你已经add到了暂存区,如何撤销(和问题一类似)
问题三:已经提交到本地仓库了,该怎么回退?
reset(goto的概念,不是删除和重写设定的意思、所有commit都还在,只是暂时看不到,随时可以回来)
git reset --soft
将HEAD引用指向某次commit。索引和工作目录的内容都没有删除,在三个命令中对现有版本库状态改动最小。
git reset --mixed(git reset默认的模式)
HEAD引用指向某次commit,索引内容被删除掉了,(工作目录内容不变,这句还难理解,就把工作区清空再操作)
git reset --hard
HEAD引用指某次commit,索引内容和工作目录内容都被reset掉了。(严格模式)
也就是在给定提交后所修改的内容都会丢失(新文件会被删除,不在工作目录中的文件恢复,未清除回收站的前提)。
问题四:如果已经提交到远程仓库,该怎么回退?
方法一:reset(不推荐使用)
注意点:其他人都需要强制用远程master覆盖掉本地的master。命令:git reset --hard origin/master
方法二:revert(团队使用)(只是反向撤销一次commit)
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,
版本会递增,并且不影响其他commit
确认生成的新commit编译成功,也没有文件冲突,可以push到服务器,完成回滚