git入门:git 各阶段版本回退命令

一、丢弃工作区的改动

在日常开发过程中,会遇到这种情况:在工作区更改了代码,但想起来有地方写错了,不想要工作区的代码了,回退到之前版本,使用命令:

git checkout – 文件名

示例:不小心删除了main.cpp文件,使用该命令,又回来了
在这里插入图片描述

二、从暂存区回退到工作区

如果是在 git add 即提交到暂存区后发现有错误,想取消对暂存区的修改,使用命令:

git reset HEAD

示例:不小心删除了main.cpp文件,并且提交到了暂存区

  1. 提交到了暂存区

在这里插入图片描述

  1. 使用 git reset HEAD回退,再使用git checkout – 恢复工作区

在这里插入图片描述

三、本地仓库回退到以前版本

如果自己的代码错误在提交到本地仓库后才知道,那么可使用下面命令回退:

git log 先查看日志里所有版本的 commit-id(一个哈希值)
再使用
git reset --hard + commit-id

示例:对main.cpp做出了更改,且提交到了本地仓库

在这里插入图片描述

使用git log查看日志,commit 后面跟的就是id值

在这里插入图片描述

想回退到上个版本,示例:复制上面的commit-id后配合使用该命令,main.cpp又变回来了。这实际上就是对HEAD指针的操作。

在这里插入图片描述

四、回退GitHub远程仓库的代码

在开发项目中如果把错误的版本提交到了远程仓库,别人克隆了你的错误版本,然后一看信息后发现是你提交的,那你少不了一顿骂。。。所以如果发生了这种错误,在别人没发现前,有下面的方法可以补救。

  1. 把自己工作区的代码改正,然后一步一步重新提交到远程仓库。
  2. 把自己本地仓库回退到以前版本,然后强制提交到远程仓库。
    使用命令
    git push -f origin main

这里示例第二个方法:
来看一个简单的示例,首先远程仓库的main.cpp是这样的

在这里插入图片描述

在本地修改main.cpp让它什么也输出不了,并提交到远程仓库:

在这里插入图片描述

此时我的远程仓库已经是错误的了:

在这里插入图片描述

然后回退自己本地仓库版本,并强制提交到远程仓库:
可以看出,使用之前的命令无法提交到远程仓库,因为远程仓库的版本优先于我本地仓库的版本,所以需要加一个强制命令 -f ,意为 force 强制。

git push -f origin main

在这里插入图片描述

这时候再来看看GitHub,又回到了以前的版本:
在这里插入图片描述

总结

  1. git checkout – 在git add之前,把工作区的代码用版本库中的代码覆盖掉,注意命令中的–不能
    去掉,否则成切换分支的命令了
  2. git reset HEAD 把git add之后,暂存区的内容全部撤销
  3. git reset --hard commitid 把提交到本地仓库中的代码改动进行回退
  4. git reflog 查看HEAD指针的改动日志
  5. git push -f 强制推送本地仓库代码到远程仓库
  6. git diff HEAD – 查看工作区file文件和仓库中该文件最新版本的代码有什么区别
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_索伦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值