1. 程式人生 > >Git永久刪除commit

Git永久刪除commit

工作中有一次不小心提交了不該提交的程式碼到GIT上,而且在發現之前又提交了幾個commit,現在想在GIT伺服器上永久刪除這個commit,具體步驟記錄如下。

    假設當前分支為master,當前的commit情況如下,現在需要刪除commit_id_2和commit_id_4:

commit_id_1
commit_id_2
commit_id_3
commit_id_4
commit_id_5
....

一、建立新的分支,用於reset操作

git checkout -b develop
git push orign -u develop

二、在新分支develop上,將commit重置到commit_id_4之前的提交

git reset --hard <commit_id_5>

三、提交新分支,覆蓋之前的commit資訊

git push orign HEAD --force

四、按原有的順序恢復不需要刪除的commit,然後提交

git cherry-pick commit_id_3
git cherry-pick commit_id_1
git push orign develop

五、刪除原有的master分支,從develop中checkout一個新分支作為master

git push orign --delete master
// 或者 git push orign :master
// 注意:master一般是預設分支,你需要先將預設分支設定為develop才能刪除

git checkout -b master
git push orign -u master
// 最後將master重新設定為預設分支

操作比較繁瑣,但是比較保險,如果有什麼好方法,可以分享一下。。