前言
實務上在多人開發的情況下, 很常在上 Code 的時候被 Git 要求先做 PULL但若是 PULL 下來的內容有問題, 特別是當同仁交付了一段會造成系統崩潰的內容至版本庫 (Repository) 時, PULL 下來的 Commit 就會使正在開發的功能受到影響, 若無法在短時間內修正, 嚴重的話甚至會影響到整個軟體專案的開發, 造成其他新功能都無法進行部屬
使用 Revert
git pull 做的事情就是 Fetch + merge, 所以事實上可以使用 git revert 把剛剛的 Merge Commit 打掉找出要打掉的 Merge Commit Id
執行 Revert 指令
$ git revert -m 1
結果如下
使用 Reset
$ git reset --hard <MERGE 之前的 COMMIT_ID>不建議用這個方法, 因為執行完上面的指令之後, 雖然 HEAD 會往前移動, 工作目錄會被還原到合併之前的 Commit, 但是在重新上 Code 時 Git 還是會要求做 PULL, 因為遠端分支的 HEAD 還是指在比較新的 Commit 上(有問題的 Commit)
除非強行覆蓋遠端版本庫中的內容, 如下
$ git push --force但實務上並不是每個開發團隊都接受使用--force 的指令作強制覆蓋, 所以要取消 Merge Commit, 建議還是使用 Revert 指令
留言
張貼留言