iT邦幫忙

2022 iThome 鐵人賽

DAY 24
2
Modern Web

我的床邊故事Git and GitHub系列 第 24

第24夜 Git commit 如何修改 關鍵字 reset、amend、rebase

  • 分享至 

  • xImage
  •  

行前提要

熊熊想起來,居然沒聊聊修改commit這部分,
就不等晚上了,現在就是現在!
不管你是像我一樣,錯字太平洋或者沒想法暫時隨便留言,
但自己獨立作業或練習就算了,協作或者工作可不能隨便開玩笑,
如今需要折返修改,那絕對需要使用這幾個指令
BTW我們可以修改任意過去commit,但必須是在push上去前哦~

$ git reset
透過回去某某步驟,拆掉重新commit,就像拆合併一次一樣,
但是如果是拆前面commit 要 add 時,後面東西都會變成一大包的 commit 。
第11夜 Git的線圖解讀 2 merge 、 reset

$ git commit --amend
修改最後一個(最新一次)commit
amend 本意就是修改,git commit 加上後面這參數可以達到修正 commit 效果,
但只能是最後一次的紀錄,沒辦法越級的~

$ git rebase -i HEAD
可以直接對需要更改的過去commit 單一修改!多個修改!

來點情境看看以上咒語怎麼處理。

git commit --amend

哎呀瞧瞧我在 commit 時要打 add dog 誤打成 god
太糗了吧,及早發現及早治療!
https://ithelp.ithome.com.tw/upload/images/20221004/20150181dJEdTXC3OA.png
如同上面提到的上一筆 commit 我可以使用$ git commit --amend
咦!這終端機畫面是不是有點熟悉,居然跑到 vi 模式,原來是在vi模式更改 commit 訊息,
步驟是如出一轍的,第7晚 Git commit 番外篇 - vi模式
https://ithelp.ithome.com.tw/upload/images/20221004/20150181fU7T5vVJ6s.png

https://ithelp.ithome.com.tw/upload/images/20221004/20150181ZnB1DNlBUu.png

也是可以不用進入到 vi 模式,就一口氣打完吧~
下面就來示範一口氣操作
$ git commit --amend -m "my new commit message"
https://ithelp.ithome.com.tw/upload/images/20221004/2015018158KzBgCbZ0.png
https://ithelp.ithome.com.tw/upload/images/20221004/20150181nBySIcKl3l.png

git rebase -i HEAD

舉例來說 我看到前兩步的 pig 想要換成別的,改成 shark (兒歌響起 baby~
$ git rebase -i HEAD~2
看來又來到 vi 模式囉~經過前面幾次的嘗試應該跟我一樣不害怕了吧(游刃有餘?
看它好熱心,介紹了很多用法呢~
https://ithelp.ithome.com.tw/upload/images/20221004/2015018106r98vQnAY.png
我們就專注在修改 commit 內容就好。
透過 r 縮寫, reword 可以來重新編輯訊息好讚
本來進入都是 pick ,我們一樣使用 vi 模式編輯, pick 改成 r
它會 focus 在需要編輯的部分,我就把 add pig 改成 add shark 寫入並提交離開。
(有可以一口氣把需要改的 pick 都改成 r 進行多個批次修改)



小結

之前只會reset,導致後面 commit 會變成一大包,沒有很喜歡。
自從發現$ git commit --amend $ git rebase -i HEAD
也太好用了吧,現在我不害怕更改過去 commit 了XD
赫然發現 vi 模式也太常出現了吧,果然水很深。

參考文獻

為你自己學 Git
Git 更改舊的 commit 訊息


上一篇
第23夜 透過 GitHub 管理追蹤專案開發 Issue Projects
下一篇
第25夜 .gitkeep keep what?
系列文
我的床邊故事Git and GitHub31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
json_liang
iT邦研究生 5 級 ‧ 2022-10-04 17:00:23

vi 要切換命令模式跟編輯模式真的操作不簡單

我要留言

立即登入留言