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 撤销&回滚命令的主要内容,如果未能解决你的问题,请参考以下文章
GitGit 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )
GitGit 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )