Git各种撤销操作


问题一:代码区(工作区)的撤销(代码还没有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到服务器,完成回滚


版权声明:本文为huangxiaominglipeng原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。