天天看点

【Git】git reset版本回滚1. git reset --hard2. git reset --soft & git reset3. 版本回滚之再回来4. git reset HEAD filename

有时候,我们用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,具体的使用方法下面这张图,展示的很全面了。

【Git】git reset版本回滚1. git reset --hard2. git reset --soft & git reset3. 版本回滚之再回来4. git reset HEAD filename

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

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

【Git】git reset版本回滚1. git reset --hard2. git reset --soft & git reset3. 版本回滚之再回来4. git reset HEAD filename