【Day24】Git 版本控制 - 修改 commit 纪录:amend

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

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

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

amend

前面所提到的 git rebasegit reset 都可以随心所欲的到你想修改的位置,但是这篇提到的 amend 就不一样了,他只能修改最新一次的 commit!

而 amend 修改的方式也超级简单,指令如下

git commit --amend -m "message"

因为他只能修改最新一次的 commit,所以也不需要像 git rebasegit reset 一样还要去查询 SHA-1 码,後续的 -m 也跟原本 commit 提交讯息时一样。

但是,值得注意的是,原先以为这个办法就是直接更改 commit 的 message 而已,其实不然,对 git 而言,commit 的内容不同,他就会认为这是一个新的东西,会重新产生一组 SHA-1 码,所以你可以观察使用 --amend 前後的差异,会发现两次 commit 的 SHA-1 码会不同。


以上就是修改 commit 的三种办法,总结一下:

  • git rebase:他的概念很像植物嫁接,直接把分支上的东西剪下贴上,原本的 commit 内容也不会消失,但是他会随着时间被 git 资源回收掉。
  • git reset:再次强调!这不是重新设定的意思,是移动到你想去的位置,而 reset 总共有三种模式:--mixed--soft 以及 --hard,会对暂存区跟工作目录的档案有不同处理方式。
  • amend:只能修改最新一次的 commit 内容,但对 git 而言不是修改,而是新增另一个不一样的 commit。

Reference

【状况题】修改 Commit 纪录


<<:  [NestJS 带你飞!] DAY24 - Authentication (下)

>>:  Day 24 : 案例分享(7.3) 库存与制造 - 从单纯的制造开始

[DAY26]Istio延伸功能-External Authorization

External Authorization这功能主要拿来做request的验证,可以在reques...

Day 5:Hexo 安装完成後的设定密技,并且为 Hexo 换上新布景!

安装好你的 Hexo 部落格後,部落格虽然已经有设定一些预设资料,但要将这些资料改成我们自己的资料嘛...

Day11 - this&Object Prototypes Ch3 Objects - Contents - Existence

作者说明了两种确认 object 特定 property 是否存在的方式 in operator:p...

Day 05-选择React & Redux

!前提小补充! UI: User Interface(使用者介面),设计页面,须注意到网页页面使用的...

铁人赛 Day3 -- PHP 基本语法 & 常用的预设变数

PHP起手式 我PHP程序不写也在这之中,将会无法正确执行我们的程序码 <?php ?>...