最近在網上搜尋git revert 和git reset 的用法對比,實際操作的時候,發現根本行不通,自己摸索了下,記錄下這篇文章。
git revert:回退某次送出,并重新送出,相當于代碼恢複修改前,但是伺服器上有兩次送出log;
git reset:回退某次送出,同時回退修改log,但是修改内容回退到本地暫存區,由使用者确定丢棄(checkout)或者重新送出。
假設目前有3個commit,git log如下:
執行 git revert head~1之後,會提示送出資訊,送出後git log如下:
執行完後,test2.c被删除了,運作git status,無任何變化。
執行 git reset head~1之後,再次看git log,如下:
執行完後,commit3被删除了;但是test3.c還在本地緩存區,運作git status,可以看見提示test3.c可以用git add包含該檔案。
若執行git reset --hard head~1,log為:
執行完後,test3.c也被删除了,檢視git status,無任何變化。
文章完全屬于個人了解,使用git時間比較短,如有了解錯誤,歡迎指出!