iT邦幫忙

2021 iThome 鐵人賽

DAY 24
3
Modern Web

曼曼來比較快_Git 版本控制系列 第 24

【Day24】Git 版本控制 - 修改 commit 紀錄:amend

  • 分享至 

  • xImage
  •  

上一次有提到說,修改 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 紀錄


上一篇
【Day23】Git 版本控制 - 修改 commit 紀錄:reset
下一篇
【Day25】Git 版本控制 - SHA-1 是什麼
系列文
曼曼來比較快_Git 版本控制30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言