git 撤销&回滚命令

工作区:指自己写代码的工作目录,未进行 git add 操作之前。

暂存区:执行过 git add 操作之后,但是为执行 git commit 操作。

本地分支:执行过 git commit 操作,但是未执行 git push 操作。

远程分支:执行过 git push 操作。

三种场景介绍:

1.git add . 但是未进行 commit 操作。     暂存区

2.git commit 但是未进行 git push 操作。 本地分支

3.git push 操作了。                                  远程分支

第一种场景

执行了 git add 操作 未执行 git commit 操作

git reset HEAD .                 撤回所有 add 的文件

git reset HEAD  文件名      撤回指定的文件

这个命令只改变暂存区代码,并不影响其他区域代码。

第二种场景

执行了 git commit 操作 未执行 git push 操作

git log 查询提交日志 找到自己需要回滚的 版本号(commit_id)

git reset --hard commit_id  撤销commit提交以及代码的修改

或者

git reset --hard HEAD^     回退到最近一次的提交

或者

git reset commit_id       仅仅撤销本地仓库的commit提交,代码不变

git reset 的几种模式
git reset主要有–soft –mixed –hard 三种方式 

HEAD^的意思是上一个版本,也可以写成HEAD~1

如果你进行了2次commit,想都撤回,可以使用HEAD~2

--mixed 
不删除工作空间改动代码,撤销commit,并且撤销(git add .) 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
--soft  
不删除工作空间改动代码,撤销commit,不撤销git add . 

--hard
删除工作空间改动代码,撤销commit,撤销git add . 

注意完成这个操作后,就恢复到了上一次的commit状态。

如果不指定reset的模式,默认使用–mixed模式。

如果 commit 注释写错了,我们可以使用 git commit --amend -m "备注" 既可以覆盖上一次的备注信息。

第三种场景

第三种场景进行撤回的命令和第二个场景撤回命令一样。但是撤销之后 需要 进行 git push -f origin branchName 操作。这样远程仓库对应分支代码就会回滚掉。

注意:一定要注意回滚指定版本号,不应该是最新提交的版本号,而应该是最新一次commit之前的版本号,否则无法进行回滚的。

慎用 git reset --hard commit_id(版本号) 因为它会把自己工作区的修改内容也给删除掉!!!

posted @ 2020-07-01 11:52  明天,你好啊  阅读(2266)  评论(0编辑  收藏  举报