天天看點

svn復原操作(撤銷修改)

 有時候我們想丢棄對代碼做過的改動。

分兩種情況:

一、改動沒有check in。這種情況下,我們使用svn revert就能把改動給扔掉了。

  提示:CVS使用者習慣于隻把本地改動過的檔案删掉,然後執行一次update來還原檔案。在svn中也可以這麼做,但最佳實踐是執行svn revert,這個操作會更安全也更迅速。因為update需要去連接配接伺服器而你沒有準備好接受新的改動,而svn revert不會連接配接伺服器也不會從伺服器擷取新的改動。

二、改動已經check in。

  這種情況下,有多種辦法可以進行撤銷修改。一般我們推薦用svn merge來達成目的。

  典型的操作過程如下:

  1、保證我們拿到的是最新代碼:

     svn update

     假設是28版本。

  2、然後找出要移除的确切版本:

     svn log contacts.java

    根據log懷疑是27版本改壞的,比較一下:

     svn diff -r 26:27 contacts.java

    發現果真是27版本壞事。

  3、撤銷27版本的改動:

      svn merge -r 27:26 contacts.java

    為了保險起見,再次确認合并的結果:

      svn diff contacts.java

    發現已正确撤銷了改動,送出。

  4、送出改動

    svn commit -m "Revert wrong change from r27"

    送出後版本變成了29。

關于整個目錄的復原,參閱文章:http://www.scmbbs.com/cn/svntp/2007/12/svntp11.php

繼續閱讀