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