git 回退(reset)、反做(revert):撤回命令总结

git撤销及回滚命令

  1. 工作区:指在自己本地分支开发,未进行 git add 操作之前。
  2. 暂存区:执行过 git add 操作之后,但是为执行 git commit 操作。
  3. 本地分支:执行过 git commit 操作,但是未执行 git push 操作。
  4. 远程分支:执行过 git push 操作。

git reset

在这里插入图片描述

分三种场景
  • 暂存区(执行了 git add 操作 未执行 git commit 操作)
   git reset HEAD .       //撤回所有 add 的文件
   git reset HEAD  文件名        // 撤回指定的文件,这个命令只改变暂存区代码,并不影响其他区域代码。
  • 尚未远程推送(还未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 注释写错了,我们可以使用 git commit --amend -m "备注" 既可以覆盖上一次的备注信息。

  • 已经远程推送(已经git push操作了),远程仓库已经保存
    第三种场景进行撤回的命令和第二个场景撤回命令一样。此时如果用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧, 需要进行 git push -f origin branchName 操作。

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

git revert

git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。

适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。
在这里插入图片描述

你在当前分支上做了几次提交,突然发现放错了分支,这几个提交本应该放到另一个分支。

 新建一个 feature 分支,指向当前最新的提交
 注意,这时依然停留在当前分支
 git branch feature

 切换到这几次提交之前的状态
 git reset --hard [当前分支此前的最后一次提交]

 切换到 feature 分支
 git checkout feature

参考:
http://www.ruanyifeng.com/blog/2019/12/git-undo.html
https://blog.csdn.net/yxlshk/article/details/79944535
https://www.cnblogs.com/ming-blogs/p/13218420.html

回退到上一次提交,可以使用以下两种方式: 第一种方式是使用"git reset"命令,具体步骤如下: 1. 打开终端,进入你的项目目录。 2. 运行命令"git log"来查看提交历史,找到你要回退到的上一个提交的commit ID。 3. 运行命令"git reset --hard commitID",将commitID替换为你要回退到的上一个提交的commit ID。 4. 运行命令"git push -f origin branchName",将branchName替换为你的分支名称,强制推送到远程仓库。 第二种方式是使用"git revert"命令,具体步骤如下: 1. 打开终端,进入你的项目目录。 2. 运行命令"git log"来查看提交历史,找到你要回退到的上一个提交的commit ID。 3. 运行命令"git revert commitID",将commitID替换为你要回退到的上一个提交的commit ID。 4. 运行命令"git push origin branchName",将branchName替换为你的分支名称,推送到远程仓库。 使用"git reset"命令会直接将HEAD指向上一个提交,并且删除后面的提交记录。而使用"git revert"命令则会创建一个新的提交,来撤销上一个提交的更改。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [git撤回上一次的提交](https://blog.csdn.net/paradoxzl/article/details/125186270)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值