學習時參考資料

github官方文檔:
https://docs.github.com/cn/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message

高見龍 為你自己學 Git :
https://gitbook.tw/chapters/rewrite-history/change-commit-message

主要關鍵核心 : git rebase

除了git rebase之外也有其他可以使用 –amend 參數來進行 Commit
可以用來更改最後一個的commit紀錄,這部分詳情可以看這篇,講的很完善:
https://gitbook.tw/chapters/using-git/amend-commit1

但假如可能不只一筆自己想要更改的commit訊息,可能很多,那就會需要用到rebase的指令互動模式。

git rebase -i 或是 git rebase --interactive

-i = –interactive

互動指令=>

  • pick:預設都是這個指令,代表會使用這個 Commit。
  • reword:使用這個 Commit,但是執行到此 Commit 時會開啟 vim 供更改 Commit 訊息。
  • edit:使用這個 Commit,但是執行到此 Commit 時會暫停,直到執行 git rebase –continue。
  • squash:將這個 Commit 與前一個 Commit 合併,訊息也會合併。
  • fixup:與 squash 相同,但會捨棄這個 Commit 的訊息。
  • drop:刪除這個 Commit,結果同直接刪除行。

自己實作

把這兩個歷史紀錄給合併成一個,會變這樣

使用的是:squash

失敗 卡住 出不去

無法再次執行rebase問題

git-rebase-todo 問題

出去的問題解決了:電腦問題,一時鍵盤沒反應

失敗紀錄

失敗過程:
使用git rebase修改完後,第一時間退出來並沒有進到下一步的編輯模式,而是直接退出到最初的狀態,歷史紀錄沒有發生任何變化,並且無法再次進行rebase,按照git給的提示(You can fix this with ‘git rebase –edit-todo’ and then run ‘git rebase –continue’)使用了git rebase –edit-todo,一番操作下來把整個歷史都給消逝殆盡。

最初狀態:

失敗後狀態:

那是如何解決

首先我先去佳萱求助

=>解決不了,一起再找ttn,最後解決了

核心失敗結論:我使用了兩個S 還有亂使用一些自己不懂的指令 所以最終毀掉全部

ttn解決思路:

  1. 最新狀況已經沒救了,先還原到還沒毀滅的歷史
  • 先使用 git reflog 查清楚歷史脈絡

  • 再使用git reset跳回還沒有毀滅的世界線,並且使用git log再次確認已跳回

    這邊要特別注意的是,使用了–hard參數之後,假如你有東西還尚未保存,那當你成功跳躍世界線後,那些東西也會一起跟你說再見。

  1. 恢復正常再來一次,反正壞掉沒差
  • 要先用git rebase –abort 把之前互動的消失掉

  • git rebase -i再來一次

  • 成功後再檢查一下