git 撤销&回滚命令

Posted ming-blogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 撤销&回滚命令的主要内容,如果未能解决你的问题,请参考以下文章

Git撤销&回滚操作

Git使用小技巧之回滚和撤销

GitGit 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )

GitGit 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )

git如何撤销pull命令。

git push完毕,发现错了,怎么撤销,回退?新建了分支怎么删除?