Git 撤銷合併(revert, reset)

如何撤銷已經被 Merge 的代碼並回到前一個 Merge

今天想要紀錄一下如何撤銷已經被 Merge 的代碼並回到前一個 Merge。

原因是在做自己的 Side Project 的時候不小心將 .env 檔案給上傳到 Repo 當中。

我想除了上述這種情況,可能還會有各種不同的情境會需要退回到上一個版本,這部分都可以通過 Git 提供的指令才實現,可以使用下面兩種方法來執行:使用 revert reset 命令。

方法一:使用 revert 撤銷合併 (會保留歷史紀錄)

你需要先透過 Git log 命令先取的過去被 commit 的資訊,一位我們要找到前幾個被合併的哈希值。

將可以看到以下的合併紀錄,我想要的就是刪除 add env file 這個 commit 點。


撤銷的方法就是 git revert 接上後面的哈希值。

其中, -m 1 表示選擇主分支作為基準。

那實際執行完後的結果會長得像這樣:


系統會跳出讓你修改的地方,此時你可以直接做修改,完成後會直接變成需要 commit 再 push 的部分。


也因為如此才會留下紀錄,但由於我的情況是不希望保留紀錄,接下來介紹第二種方法。

方法二:使用 reset 回到前一個狀態 (徹底刪除合併紀錄)

執行第二種方法的步驟和第一種方法差不多,一樣需要先取的 log 的哈希值,才會知道你想要回去的地方是哪一個點。


此時我希望將 add env file 這整個點都在記錄中被移除,需要做的事情就是複製下一個的哈希值,這樣才能夠回到上一個被 Merge 的點上。

使用 git reset --hard 命令重製指定的提交,執行的指令為 (注意:這將會把之前的合併全部移除,要小心使用):


當你將點回復至上一個 Merge 點時,就可以再次執行 Push 的指令來完成更改的動作。

執行完畢後:



張貼留言

較新的 較舊