Day15|【Git】git reset 补充 - 三种模式

之前介绍 git reset 时,有提到说使用 git reset 指令时,有三种常用来搭配的参数模式,因此本篇就来详细说明这三种模式分别是什麽意思。


💡 git reset - Reset current HEAD to the specified state

意思为可以使 HEAD 指标指向其他地方。

这些模式代表被 reset 出来的 Commit 其 HEAD 与 Branch 会指向何处,另外工作目录与暂存区中的档案会有什麽改变。


# Mixed 模式(预设)

当 git reset 後面没加参数时,预设为 mixed 模式

$ git reset **--mixed** [commit]
//同 git reset [commit]

此模式会将暂存区的档案丢掉,但不会影响到工作目录的档案。也就是说我们指令中的 commit 除了移动 HEAD 及 Branch 外,也会从暂存区移出,但会留在工作目录。

🛠 实际操作

假设现在有以下这些 Commit 版本

https://ithelp.ithome.com.tw/upload/images/20210929/20141010lKNeTAfeTU.png

我还原到 a8bf179 这个版本(使用 master^ 方式),并用 git status 指令查看档案状态。

$ git reset master^ # 还原到目前 master 前一个版本
$ git status # 查看档案状态

https://ithelp.ithome.com.tw/upload/images/20210929/20141010Nx0nrK5sw0.png

no changes added to commit (use "git add" and/or "git commit -a")

讯息回馈:no changes added to commit ,代表目前档案还没有加至暂存区,如果之後要提交,需要再次使用 git add 指令,将档案加至暂存区後并提交。

# Sort 模式

$ git reset **--soft** [commit]

使用 Sort 模式的 reset,拆出来的 Commit 只是单纯移动 HEAD 与其 Branch,暂存区与工作目录中的档案并**不会被丢弃**

🛠 实际操作

假设现在有以下这些 Commit 版本

https://ithelp.ithome.com.tw/upload/images/20210929/20141010Rz9lgvq82z.png

同先前使用过的方式,取得 a8bf179 版本,只是这次有加上 --soft 的模式。

$ git reset master^ --soft
$ git status

https://ithelp.ithome.com.tw/upload/images/20210929/20141010Td75gAYfji.png

Changes to be committed

讯息回馈:Changes to be committed ,代表目前档案被放置在暂存区,并等待被提交

# Hard 模式

$ git reset **--hard** [commit]

使用 Hard 模式的 reset,除了移动 HEAD 与其 Branch 外,暂存区与工作目录中的档案也都会被移出

🛠 实际操作

假设现在有以下这些 Commit 版本

https://ithelp.ithome.com.tw/upload/images/20210929/20141010v3putTYiZl.png

同先前使用过的方式,取得 a8bf179 版本,改成加上 --hard 的模式。

$ git reset master^ --hard
$ git status

https://ithelp.ithome.com.tw/upload/images/20210929/201410104OKUUzINUO.png

nothing to commit, working tree clean

讯息回馈:

nothing to commit - 目前没有任何异动需要commit

working tree clean - 目前工作目录非常乾净,没有任何增删修。


将以上观念使用表格、图示整理:

https://ithelp.ithome.com.tw/upload/images/20210929/201410106vURH0WyY7.png

https://ithelp.ithome.com.tw/upload/images/20210929/20141010KvUz58KCHc.png


<<:  Day15-Redux 篇-实作范例

>>:  TypeOrm | Repository APIs 用法纪录 1

第30天:终於撑到完赛QQ-後端或是ASP.NET Core的学习笔记

四开四个主题实在太累,ASP.NET Core的学习笔记这个主题,只是想记录一下之前写专案的过程,透...

[Lesson3] BMI

今天要来做一个计算BMI的简易App! activity_main.xml: 使用LinearLay...

前言

这次的系列文章主要目的是希望可以透过这些文章的撰写,来让自己统整从开始工作到现在学习的内容,并且透过...

[18] [烧瓶里的部落格] 08. 撰写测试

写单元测试可以检查程序是否按预期执行,Flask 可以模拟发送请求并回传资料 应当尽可能多进行测试,...

个人笔记 维修单派工 系统架构图

上次的画完系统流程图後,接续开始着手画系统架构图。因之前是资讯管理系毕业,专题中有画过系统架构图,所...