IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git 笔记 - git reset -> 正文阅读

[开发工具]Git 笔记 - git reset

git reset 命令用于回退版本,可以指定退回某一次提交的版本。

01 前期了解之 HEAD

简单了解下 HEAD :它类似于指针,指向当前所在分支提交至仓库的最新一次的 commit。

用法含义
HEAD = HEAD~0 = HEAD^0表示当前提交
HEAD~ = HEAD~1 = HEAD^表示上 1 次提交
HEAD~~= HEAD~2 = HEAD^^表示上 2 次提交
HEAD{n个~} = HEAD~n = HEAD{n个^}表示上 n 个提交(n >= 0)

02 实际用法之 reset

  • --mixed :默认参数。用于重置暂存区的文件,回到某次的提交,工作区保持不变。
# 使用上一次提交重置暂存区

# 方式 01 - 使用 HEAD
$ git reset --mixed HEAD^  或  git reset HEAD^
# 方式 02 - 使用 commitId
$ git reset --mixed <commitId>git reset <commitId>
  • --soft :用于回退到某个版本,暂存区和工作区都不会被改变。
# 将提交记录回退一次,暂存区和工作区代码不变

# 方式 01 - 使用 HEAD
$ git reset --soft HEAD^
# 方式 02 - 使用 commitId
$ git reset --soft <commitId>
  • --hard :撤销工作区中所有未提交的修改内容,将暂存区与工作区都重置到某个版本。
# 使用最新一次提交重置暂存区和工作区

# 方式 01 - 使用 HEAD
$ git reset --hard HEAD^
# 方式 02 - 使用 commitId
$ git reset --hard <commitId>
  • mixed、soft、hard 对比效果图如下:

03 reset 后如何恢复

执行 reset 命令之后,HEAD 会指向历史的某个 commit ,但后面的 commit 其实依然存在的,只是看不到了。那么问题来了,如何恢复 reset 掉的 commit 呢?答案是:使用 git reflog + git reset,即用 reflog 查到操作记录的 id,再使用 reset 回到该 id!

git log:查看所有提交过的信息,不包括回退的提交;
git reflog: 查看所有分支的所有 git 操作记录,包括回退的提交;

实例如下:

# 回退上一次的提交记录👇
# 01 查看最新的提交记录
$ git log --oneline
--->>
2b2fefa (HEAD -> dev) modify hello
91dd367 modify world
69322b6 init
---<<

# 02 回退到上一个提交
$ git reset --hard HEAD^
--->>
HEAD is now at 91dd367 modify world
---<<

# 03 查看回退后的提交记录,已经回退成功!
$ git log --oneline
--->> 
91dd367 (HEAD -> dev) modify world
69322b6 init
---<<

# 此时想要恢复到回退掉的提交👇
# 01 查看所有的 git 操作记录,找到对应的标识( HEAD@{1} 或 2b2fefa)
$ git reflog   
--->>  
91dd367 (HEAD -> dev) HEAD@{0}: reset: moving to HEAD^
2b2fefa HEAD@{1}: commit: modify hello
69322b6 HEAD@{2}: commit: init
---<<

# 02 回退到之前的操作
$ git reset --hard HEAD@{1}
--->>  
HEAD is now at 2b2fefa modify hello
---<<

# 03 回退(恢复)成功!
$ git log --oneline    
--->>      
2b2fefa (HEAD -> dev) modify hello
91dd367 modify world
69322b6 init
---<<

04 reset 和 revert 的区别

git resetgit revert 都能重置版本,且都需要谨慎使用,但这两个命令有着不同的效果:

命令描述
git reset将 HEAD 指针指到指定提交,历史记录中不会出现放弃的提交记录。
git revert放弃指定提交的修改,以前的历史记录都在。它会生成一次新的提交去反转需要放弃的修改,该提交需要填写 commit 信息。
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:48:17  更:2022-02-28 15:49:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:51:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码