【Day23】Git 版本控制 - 修改 commit 纪录:reset

上一次有提到说,修改 commit 的方式有以下几种:

  1. 把 .git 目录整个删除,暴力破解法,请不要轻易尝试谢谢。
  2. 使用 git rebase 来修改历史。
  3. 先把 Commit 用 git reset 拆掉,整理後再重新 Commit。
  4. 使用 --amend 参数来修改最後一次的 Commit。

已经介绍完 rebase,接下来就来讲解 reset 吧!

git reset

当我们第一眼看到 reset 会直觉反应是重新设定的意思,但其实在 git 中的 reset 反而是 go to、become 的意思,为什麽会这样讲呢?我们透过实际例子来看看

如果你想修改的是「上一次」的纪录,那麽你可以使用以下两种指令

git reset master^

或

git reset HEAD^

masterhead 後面接着的 ^ 代表的意思就是「上一次」

倘若你想修改的是「非上一次」的纪录,必须先使用 git log --oneline 查询 SHA-1 码,然後使用的指令如下:

git reset <SHA-1>

那为什麽会说在 git 里的 reset 是 go to、become 的意思呢?

因为上面的指令如果翻成白话文的话是「请帮我移动到我指定的位置」,原本那些 commit 都还是在,并没有消失不见,只是暂时隐藏起来而已,随时都可以再找回来。

Reset 模式

git reset 也可以搭配参数使用,而他有三种比较常见的模式:--mixed--soft 以及 --hard

mixed

mixed 是预设的参数,如果没有输入的话就是以此模式进行,这个模式会把暂存区的档案丢掉,但不会动到工作目录的档案,也就是说 Commit 拆出来的档案会留在工作目录,但不会留在暂存区。

soft

soft 模式则是不管是暂存区还是工作目录的档案都不会被删掉,只有 HEAD 的移动而已。也因此,Commit 拆出来的档案会直接放在暂存区。

hard

hard 模式的话,就是暂存区还是工作目录的档案都会被删掉,但如果不小心使用 hard 模式又後悔了怎麽办!没关系,还是有办法救回来,详情请见这篇文章

Reference

【状况题】刚才的 Commit 後悔了,想要拆掉重做…


<<:  Day 24 - 依 Yachts 前台页面分析拆解後,逐步建立 Overview 後台功能 - 动态新增栏位 - ASP.NET Web Forms C#

>>:  Day 23 - Spring AOP

[Day-11] R语言 - K - mode 实作 ( K - mode in R.Studio)

您的订阅是我制作影片的动力 订阅点这里~ 影片程序码 library(naniar) data(ir...

DAY 21:Bridge Pattern,桥接人间与魔界的次元门

什麽是 Bridge Pattern? 将抽像与实现分离,让彼此变化互不影响 问题情境 PS5 有着...

手机审验与资安认证

根据风传媒的报导,台哥大手机被要求限期召回於制程中即被骇的手机,引起大众对於通讯产品检验及审验的讨论...

Day-20 用 Pytorch 的最後一个块拼图

那我们已经在昨天说明了 Pytorch 的 Dataset 跟 DataLoader 要如何建立了...

Day 13 : 弱监督式标注资料 Snorkel (视觉关系侦测篇)

接续 Day 12的弱监督式 Snorkel 范例,今天再花点时间示范用 Snorkel 标注影像...