Github - 如何使用rebase移除GitHub上最新或特定的 commit(二)

How to remove the last commit and froce push again?

在前一篇 Github - 如何移除GitHub上所有的 commit(一) 的系列文中介紹到了如何完整個將整個 repository 的 commit 刪的一乾二淨,但是該篇方法基本上適用的情況不多,僅適用於自己的測試專案或是分支,千萬不要在 master 上執行,一般專案在管控版本更不應該做那個動作。

而本篇方法將會教各位如何使用 rebase 刪除最新的 commit 或是 指定的某些 commit 讓他消失(強制刪掉)。個人使用的經驗與情境通常是做壞了或是跟下一個要 commit 的事項基本上可以一起處理時,就會做這個動作。

在本範例你會學到:

  • 使用 git rebase 刪除 commit

在本範例你需要先準備好:

  • 有基礎的使用 Git 的能力

註:友善提醒,對 Git 不熟的夥伴請時常備份 code 或是使用分支實驗,請不要隨便針對 master 做這些動作

1.找到想要刪除的 commit

  • 在 terminal 輸入下列語法,後面的數字2可以自己隨意更改
git rebase -i HEAD~2
  • 基本上會進入一個編輯模式,將會列出最新兩筆 commit
pick 600557f test-1001 Add round() to function
pick c4394fd test-1001 Modified typo error

2.刪除指定 commit 的資訊

  • 編輯該檔案,將想要刪除的 commit 整句刪掉,越下面的 commit 代表越新
  • 存檔離開後就會被提醒該檔案被修正了
Successfully rebased and updated refs/heads/test-1001. 

3.更新到 GitHub上

目前所有動作都是在本地端的紀錄,在 GitHub 上的 commit 還是存在的,所以要強制 push 將舊的紀錄蓋掉:

git push origin yourbranchName --force

記得換上自己的分支名稱,執行後上 GitHub 頁面有沒有發現少了一個 commit 呢?!

參考資料

網路上有蠻多各種五花八門的方式,我也不能確定哪種方式是最好的,所以選擇了一個相對簡單的方式,如果有更正式或好用的方法歡迎大家留言告訴我。

https://medium.com/micheh/%E7%A7%BB%E9%99%A4-github-%E4%B8%8A%E9%9D%A2%E7%9A%84-commit-91d62ca424a1

https://gist.github.com/CrookedNumber/8964442

若有任何問題與指教歡迎與我聯繫,若覺得我的內容不錯麻煩幫我隨便點個廣告,謝謝。


 上一篇
seo系列 - Enable text compression on Nginx seo系列 - Enable text compression on Nginx
Enable GZIP for CSS and JS files on NGINX server.在本範例你會學到: 如何評分自己網頁的 seo 是否及格 在 nginx 實現GZIP壓縮 css 與 js 來達成加速網頁載入 在本範例
2020-04-13
下一篇 
Github - 如何刪除GitHub上所有的 commit(一) Github - 如何刪除GitHub上所有的 commit(一)
How to remove all history commit and push again?大家應該都有一個經驗,在程式或是網頁的檔案都準備就緒,repository 也創好之後,快樂的下了 git push 指令上去 Github,按
2020-03-18
  目錄