日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

玩转SVN系列之【如何放弃本地/服务器端所做的修改】

發布時間:2023/12/15 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 玩转SVN系列之【如何放弃本地/服务器端所做的修改】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前幾天我遇到了如何在GIT下放棄本地所做的修改的問題,并寫了一篇博客來整理其中的思路,詳見(玩轉GIT系列之【如何放棄本地/服務器端所做的修改】)。但是今天,我在SVN下遇到了同樣的問題,而且是linux系統下命令行的SVN,不是windows系統下的圖形界面。所以,一切還是得靠命令來解決,具體來說要分以下幾種情況來區別對待:

第一種情況:放棄本地的修改內容

也就是說,你所做的修改仍然是在本地,尚未提交到服務器端。這種情況下,使用“svn revert”命令就能取消之前的修改。用法如下:

svn revert [-R] target

其中target是你需要放棄修改(即還原成服務器版本)的目錄或文件。

  • 當target為單個文件時,直接“svn revert target”就行了;
  • 當target為某個目錄時,需要加上參數-R(Recursive,遞歸),否則只會針對target根目錄進行處理,而不會處理它下面的子目錄。

比如:想要放棄整個工程里所有的修改內容,則可以在整個工程的根目錄下執行下述命令:

svn revert -R *

注意:一旦使用了這個命令,就意味著你完全放棄本地所做的修改,這些文件的內容將會被徹底還原成服務器端的版本。而這種放棄不可撤銷的,是找不回來的,這一點請注意!

特別說明:此處的revert命令,只是針對之前就已經存在的那些文件。如果你本次還新增了一些文件,則revert命令并不會將你新增的文件刪除或者清空,仍需你自己手動操作。經過摸索,我找到了一個命令可以完成這個任務,也就是說,可以自動刪除那些你新增的、但是尚未提交的文件。親測可用,大家如果有需要可以拿去用:

svn st | grep '^?' | awk '{print $2}' | xargs rm -rf

劃重點:

總結一下就是,如果你修改了若干文件,同時還新增了一些文件,然后突然想放棄所有的操作,將所有代碼恢復原樣,那么則可以采取以下命令組合:

svn revert -R * # 對已經存在的文件,恢復原樣 svn st | grep '^?' | awk '{print $2}' | xargs rm -rf # 對本次新增的文件,全部刪除

特別說明:

以上方法,經本人反復嘗試,在實際應用中存在一些未知的風險,請謹慎使用。具體的現象描述如下:

1、從SVN上克隆一個linux系統的代碼倉庫至本地,編譯完畢,所有一切正常;
2、執行“svn revert -R *”命令,再次編譯,所有一切依舊正常;
3、執行“svn revert -R *”之后接著執行“svn st | grep ‘^?’ | awk ‘{print $2}’ | xargs rm -rf”命令,再次編譯,出現問題,編譯生成的image文件異常(表現為內容偏大,原本是3.99M,現變為4.99M,原因未知);

上述現象可反復重現,但是原因未知,將其記錄在此處,待日后若有結論再行補充。


第二種情況:放棄服務器端的修改內容

也就是說,你所做的修改已經被提交到了服務器上了。這種情況下,只能用“svn merge”命令來進行版本回滾。回滾的操作過程如下:

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

svn update

假設最新版本號是28。

2、然后找出要回滾的確切版本號

svn log [something]

假設根據svn log日志查出要回滾的版本號是25,此處的something可以是文件、目錄或整個項目。如果想要更詳細的了解情況,可以使用svn diff -r 28:25 [something]。

3、回滾到版本號25

svn merge -r 28:25 something

為了保險起見,再次確認回滾的結果:

svn diff [something]

確認正確無誤,方可提交。

4、提交回滾之后的內容

svn commit -m "Revert revision from r28 to r25, because of ..."

提交后版本變成了29。

總之,將以上操作總結為三條如下:

  • svn update,svn log,找到最新版本(latest revision);
  • 找到自己想要回滾的版本號(rollbak revision);
  • 用svn merge來回滾: svn merge -r : something;
  • 收工!

    總結

    以上是生活随笔為你收集整理的玩转SVN系列之【如何放弃本地/服务器端所做的修改】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。