Git各種撤銷操作

gary-liu發表於2016-05-07

撤銷git add操作

git reset HEAD <file>   # 取消add操作並保留修改
git checkout -- <file> #若繼續該命令,則會刪除掉剛剛的修改內容

撤銷git commit操作

git reset --soft <commit_id>   #可以回退到某個commit並儲存之前的修改  <commit_id>從git log中取,取前7位即可
git reset --hard <commit_id>  #回退到某個commit不保留之前的修改

撤銷git push操作

push後撤銷該次commit

git revert <commit_id>

原理: git revert 會產生一個新的 commit,它和指定 SHA 對應的 commit 是相反的(或者說是反轉的)。 任何從原先的 commit 裡刪除的內容會在新的 commit 裡被加回去,任何在原先的 commit 里加入的內容會在新的 commit 裡被刪除。這是 Git 最安全、最基本的撤銷場景,因為它並不會改變歷史 — 所以你現在可以 git push 新的“反轉” commit 來抵消你錯誤提交的 commit。

push後刪除一些不該提交的檔案

刪除遠端分支上的檔案,同時也刪除了本地倉庫的檔案:

git rm file 
git commit -m "test delete"   
git push origin branch name

刪除遠端分支上的檔案,但同時保留本地倉庫的檔案

git rm --cached filename 
git commit -m "delete" 
git push origin branch name

刪除遠端分支上的資料夾,但同時保留本地倉庫的資料夾及檔案

git rm -r --cached directory
git commit -m "test"
git push origin branch name

[參考]
Git撤銷提交併儲存之前的修改
如何在 Git 裡撤銷(幾乎)任何操作

相關文章