【Git】git reset版本回滚

有时候,我们用Git的时候有可能commit提交代码后,发现这一次commit的内容是有错误的,那么有两种处理方法:
1、修改错误内容,再次commit一次
2、使用git reset 命令撤销这一次错误的commit
第一种方法比较直接,但会多次一次commit记录。
而我个人更倾向第二种方法,错误的commit没必要保留下来。
那么今天来说一下git reset。它的一句话概括

git-reset - Reset current HEAD to the specified state

意思就是可以让HEAD这个指针指向其他的地方。例如我们有一次commit不是不是很满意,需要回到上一次的Commit里面。那么这个时候就需要通过reset,把HEAD指针指向上一次的commit的点。
它有三种模式,soft,mixed,hard,具体的使用方法下面这张图,展示的很全面了。

在这里插入图片描述

1. git reset --hard

reset --hard 会在重置 HEAD 和branch的同时,重置stage区和工作目录里的内容。当你在 reset 后面加了 --hard 参数时,你的stage区和工作目录里的内容会被完全重置为和HEAD的新位置相同的内容。换句话说,就是你的没有commit的修改会被全部擦掉。

例如你在上次 commit 之后又对文件做了一些改动:把修改后的ganmes.txt文件add到stage区,修改后的shopping list.txt保留在工作目录

2. git reset --soft & git reset

参考:Git reset的三种模式

3. 版本回滚之再回来

加入我们已经从版本2回滚到了版本1,那么我们又想从版本1回滚到版本2怎么办?

git reflog介绍: 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)

执行 git reset --hard HEAD~1,退回到上一个版本,用git reflog则可以看到被删除的commitid(用git log则是看不出来被删除的commitid),我们就可以买后悔药,恢复到被删除的那个版本。

操作过程为:

1、git reflog 查看想要回退到那个版本的哈希码
2、git reset --hard HEAD^回退

4. git reset HEAD filename

让文件从暂存区回到工作区,仍保持修改状态

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44441131/article/details/119997340