之前介绍 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 版本
我还原到 a8bf179
这个版本(使用 master^ 方式),并用 git status
指令查看档案状态。
$ git reset master^ # 还原到目前 master 前一个版本
$ git status # 查看档案状态
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 版本
同先前使用过的方式,取得 a8bf179
版本,只是这次有加上 --soft
的模式。
$ git reset master^ --soft
$ git status
Changes to be committed
讯息回馈:Changes to be committed
,代表目前档案被放置在暂存区,并等待被提交。
Hard
模式$ git reset **--hard** [commit]
使用 Hard 模式的 reset,除了移动 HEAD 与其 Branch 外,暂存区与工作目录中的档案也都会被移出。
🛠 实际操作
假设现在有以下这些 Commit 版本
同先前使用过的方式,取得 a8bf179
版本,改成加上 --hard
的模式。
$ git reset master^ --hard
$ git status
nothing to commit, working tree clean
讯息回馈:
nothing to commit
- 目前没有任何异动需要commit
working tree clean
- 目前工作目录非常乾净,没有任何增删修。
将以上观念使用表格、图示整理:
>>: TypeOrm | Repository APIs 用法纪录 1
四开四个主题实在太累,ASP.NET Core的学习笔记这个主题,只是想记录一下之前写专案的过程,透...
今天要来做一个计算BMI的简易App! activity_main.xml: 使用LinearLay...
这次的系列文章主要目的是希望可以透过这些文章的撰写,来让自己统整从开始工作到现在学习的内容,并且透过...
写单元测试可以检查程序是否按预期执行,Flask 可以模拟发送请求并回传资料 应当尽可能多进行测试,...
上次的画完系统流程图後,接续开始着手画系统架构图。因之前是资讯管理系毕业,专题中有画过系统架构图,所...