如何撤銷已經被 Merge 的代碼並回到前一個 Merge
今天想要紀錄一下如何撤銷已經被 Merge 的代碼並回到前一個 Merge。
原因是在做自己的 Side Project 的時候不小心將 .env 檔案給上傳到 Repo 當中。
我想除了上述這種情況,可能還會有各種不同的情境會需要退回到上一個版本,這部分都可以通過 Git 提供的指令才實現,可以使用下面兩種方法來執行:使用 revert 和 reset 命令。
方法一:使用 revert 撤銷合併 (會保留歷史紀錄)
你需要先透過 Git log 命令先取的過去被 commit 的資訊,一位我們要找到前幾個被合併的哈希值。
將可以看到以下的合併紀錄,我想要的就是刪除 add env file 這個 commit 點。
撤銷的方法就是 git revert 接上後面的哈希值。
其中, -m 1 表示選擇主分支作為基準。
那實際執行完後的結果會長得像這樣:
方法二:使用 reset 回到前一個狀態 (徹底刪除合併紀錄)
執行第二種方法的步驟和第一種方法差不多,一樣需要先取的 log 的哈希值,才會知道你想要回去的地方是哪一個點。
此時我希望將 add env file 這整個點都在記錄中被移除,需要做的事情就是複製下一個的哈希值,這樣才能夠回到上一個被 Merge 的點上。
使用 git reset --hard 命令重製指定的提交,執行的指令為 (注意:這將會把之前的合併全部移除,要小心使用):
當你將點回復至上一個 Merge 點時,就可以再次執行 Push 的指令來完成更改的動作。
Tags:
github