在GIT中修改提交記錄

在SVN中,提交記錄是沒法修改的。好比說,當咱們提交了某次修改後,發現該次提交中有錯誤時,只能將將補丁再次提交一遍。這樣,就存在兩次提交記錄,沒有保證提交的原子性。html

在GIT中,因爲提交是在本地進行的,所以若是沒有發佈以前,是容許使用reset命令來撤銷提交記錄的,這個命令有以下三種使用方式:git

  1. git reset -soft: 只撤銷commit,保留working tree和index file。
  2. git reset -mixed: 撤銷commit和index file,保留working tree
  3. git reset -hard: 撤銷commit、index file和working tree,即撤銷銷燬最近一次的commit

默認是-mixed,不過我沒有看出來mixed和soft有什麼區別,都是把日誌歷史給reset了,內容保持不變。而hard則是把日誌連同內容一塊兒回退了,相似於回滾。服務器

日誌能夠reset的好處是:能夠隨時commit,這樣就不用擔憂後面的修改影響到前面,commit日誌也能夠不用填得很規範。每完成一個迭代後,再把以前的全部commit所有給reset掉,從新寫一個能正規的註釋,發佈到服務器。spa

修改已經發布的修改 日誌

若是你的提交已經發布,reset後發佈時會將服務器上的提交記錄給同步下來,進行一次merge後再次發佈。此時就GIT的工做方式是和SVN同樣的了。此時,若是要修改服務器段的提交記錄,則可使用使用了園子裏的一篇文章:Git如何永久刪除文件(包括歷史記錄)中介紹的強制推送的命令:htm

    git push origin master --forceblog

先reset,本地提交後,用該命令強制發佈,此時服務器的提交記錄就會被被本地提交記錄覆蓋。get

須要注意的是:修改已經發布的提交是有很大的有風險的,會致使沒法回退到歷史版本。這也是SVN不容許修改提交記錄的緣由。雖然GIT提供了這個命令,但不到萬不得已的時候不建議使用它。同步

相關文章
相關標籤/搜索