Git 撤銷修改


 

Git 撤銷修改

 

增補提交

  git commit –C HEAD –a --amend

  -C表示復用指定提交的提交留言,這個例子中是HEAD,實際上可以指定其他有效的提交名稱。

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

  增補提交只能針對最后一個提交,如果想更正好幾個提交之前的某個錯誤,則須使用git revert這個命令。

 

反轉提交

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

  通常Git會立即提交反轉結果,但是也可以通過參數-n告訴Git先不要提交,這用於反轉多個提交非常有用,運行多個git revert –n命令,Git會暫存所有的變更,然后做一次性提交。

  做反轉操作的時候必須提供提交名稱,反轉總是按照從新到舊點的倒序來操作的,即最后的提交最先反轉,這樣可以避免一些不必要的沖突。

 

復位

  命令git reset可以在復位版本庫后,暫存工作目錄樹中因復位產生的與版本庫的差異,以便提交。

  這對於在之前的提交中發現錯誤並需要更改時非常有用。

  這是通過--soft選項實現的,它使得Git暫存所有的因復位帶來的差異,但不提交它。之后,用戶可以修改這些內容再提交,或者干脆扔掉這些內容。

  選項--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/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM