Git 撤銷修改

增補提交

  git commit –C HEAD –a --amendhtml

  -C表示複用指定提交的提交留言,這個例子中是HEAD,實際上能夠指定其餘有效的提交名稱。git

  若是參數是小寫的-c,就會打開預先設置好的編輯器,以便在已有的提交留言基礎上編輯修改。緩存

  增補提交只能針對最後一個提交,若是想更正好幾個提交以前的某個錯誤,則須使用git revert這個命令。編輯器

 

反轉提交

  反轉已經提交的改動,使用git revert命令,此命令經過在版本庫中建立一個「反向的」新提交來抵消原來提交的改動spa

  一般Git會當即提交反轉結果,可是也能夠經過參數-n告訴Git先不要提交,這用於反轉多個提交很是有用,運行多個git revert –n命令,Git會暫存全部的變動,而後作一次性提交。版本控制

  作反轉操做的時候必須提供提交名稱,反轉老是按照重新到舊點的倒序來操做的,即最後的提交最早反轉,這樣能夠避免一些沒必要要的衝突。htm

 

復位

  命令git reset能夠在復位版本庫後,暫存工做目錄樹中因復位產生的與版本庫的差別,以便提交。blog

  這對於在以前的提交中發現錯誤並須要更改時很是有用。get

  這是經過--soft選項實現的,它使得Git暫存全部的因復位帶來的差別,但不提交它。以後,用戶能夠修改這些內容再提交,或者乾脆扔掉這些內容。it

  選項--hard要當心使用,該選項會從版本庫和工做目錄樹中同時刪除提交,--hard就好像版本庫中的刪除鍵,而且不可恢復。

  git reset是以提交名稱做爲參數的,默認值是HEAD,能夠用^~做爲提交名稱的修飾符來指定某個版本。

  HEAD^是指把版本庫復位到當前HEAD以前的那個節點上,把HEAD這個版本的修改扔到工做目錄樹中,

  540ecb7~3是指要復位到540ecb7以前的三個節點上,即把該提交和以前的兩個提交(共三個提交)扔到工做目錄樹中。

 

  git reset --hard HEAD^ 強制復位前一個提交。

  git reset HEAD能夠用來清除已經add到緩存區可是不想進一步提交的內容。

  另外一種方式是用git rm --cached,選項--cached代表是清除緩存區,而後不動工做目錄樹。

  注意git checkout filename將會刪除該文件中全部沒有暫存和提交的改動,這個操做是不可逆的。

 

參考資料

  《版本控制之道——使用Git》(Pragmatic Version Control Using Git)

  Git分支管理策略:http://www.ruanyifeng.com/blog/2012/07/git.html

  Git Reference: http://gitref.org/

相關文章
相關標籤/搜索