Linux下SVN常用命令

2021-09-02 06:44:12 字數 4627 閱讀 5157

linux下svn常用命令,總結如下:

命令格式:svn checkout url [path] (簡寫:svn co)

url:**路徑 path:儲存拷貝的本地路徑 如果省略路徑引數,url 最末尾的目錄名作為目標目錄名。

例: svn co svn:

命令格式:svn update -r版本號 [path] (簡寫:svn up)

svn update如果後面沒有指定-r選項及目錄,預設將當前目錄及其子目錄下的所有檔案都更新到最新版本。

例: svn update(將當前目錄及其子目錄更新到最新版本) svn update -r200 (將當前目錄及其子目錄更新或還原到版本200)

svn update -r 200 scripts/startup_1_init (將startup_1_init檔案更新或還原到版本200)

命令格式:svn add path 把檔案以及目錄的名稱新增給版本控制系統,它們會在下次提交時被新增到專案倉庫中。

例: #mkdir test #svn add test (將目錄test新增給版本控制系統) a test (命令執行後test目錄狀態為「a」,表示新增)

#touch test.txt #svn add test.txt (將檔案test.txt新增給版本控制系統) a test.txt (命令執行後test.txt檔案狀態為「a」,表示新增)

命令格式:svn status [path](簡寫:svn st) 列印工作拷貝中檔案和目錄的狀態。 svn st|grep

^狀態(獲得某狀態檔案列表) svn st|grep -v ^狀態(也作svn st|grep

[狀態],過濾掉某狀態得到其他狀態檔案列表) 例: svn st|grep ^m (獲取「m」狀態檔案列表) svn

st|grep -v ^?(過濾掉「?」狀態的檔案列表) 常見狀態如下:

「a」 預定加入到版本庫

「c」 發生衝突

「d」 被刪除了

「m」 內容被修改

「?」 條目未納入版本控制

「!」 該專案已遺失(被非svn命令刪除)或不完整

「~」 版本控制下的專案與其它型別的專案重名 其中,「?」「!」「~」為非正常狀態,svn不會將處於該狀態的檔案提交至專案倉庫。 「!」 狀態說明 出現原因:使用非svn命令(rm等)刪除了此條目。 解決方法:使用svn update(svn

up),將被刪除的條目更新出來。 正確操作方法:使用svn delete刪除納入版本控制的條目 「~ 」狀態說明

出現原因:刪除了乙個版本庫的檔案,新建了乙個在原來的位置,新建檔案型別與原有檔案不一致,而且整個過程中沒有使用svn delete或是svn

add。 解決方法: 將「~」檔案svn revert 掉,按照正確操作重新修改。 出錯案例:

wsdl標頭檔案統一建立在include/wsdl_include目錄中,各模組webservice目錄下的同名wsdl標頭檔案只是建立的軟鏈結。若拷貝include/wsdl_include目錄中wsdl標頭檔案將webservice目錄下的同名wsdl標頭檔案覆蓋掉,svn

st檢視wsdl標頭檔案狀態為「~」。

命令格式:svn revert [-r] path 撤銷掉對本地**所做的修改恢復到原始未改變的工作副本狀態。

若撤銷對整個目錄的修改,需要加「-r」選項。

-r:向下遞迴,撤銷對整個目錄所做的修改。 例: svn revert scripts/startup_1_init(發現誤改了某個檔案,可執行此命令將改動撤銷掉。) svn revert -r scripts

(撤銷對scripts目錄中檔案所做的所有改動。)

命令格式:svn diff [-r m:n] [path](簡寫:svn di) 將修改的檔案與基礎版本比較。 例: svn diff

(預設顯示當前目錄及其子目錄下的所有修改差異) svn diff

scripts/startup_1_init(檢視startup_1_init檔案的修改差異) svn diff >bug***.diff

(修改內容多時匯出到diff檔案中,便於更直觀的檢查。) svn diff -r m:n [path]

(對版本m和版本n比較差異。) 獲得**合入後的diff 檔案(即某次的提交diff): svn diff -r

提交後版本號-1:提交後版本號 > bug***.diff 或使用等價命令 svn diff -c 提交後版本號 >

bug***.diff (檢查合入後的diff檔案內容是否與自己的修改相符,有沒有多合、漏合或者錯合的**

,對比合入前生成的diff檔案與合入後的diff檔案是否一致。)

注:svn status、svn diff和 svn

revert這三條命令在沒有網路的情況下也可以執行的,原因是svn在本地的.svn中保留了本地版本的原始拷貝。

命令格式:svn commit -m 「bug*** by ***」 [path] (簡寫:svn ci) path

不填或為「.」時,即將當前目錄及其子目錄下的所有改動提交到版本庫。 例: svn commit -m 「bug112 modified by

zhangsan」 --username zhangsan

注:在**根目錄下將對應問題單的所有修改檔案一次性提交到版本庫,不要到各個目錄下分別提交以避免漏合;問題一次性修改合入,避免乙個問題單合入多次導致中間版本出現編譯或功能問題。

命令格式:svn log [path] 顯示本地 path的日誌資訊,path不填或為「.」時顯示當前目錄的日誌資訊。 例: svn log

scripts/startup_1_init(顯示此檔案的所有修改記錄,及其版本號的變化。) svn info檢視檔案詳細資訊

命令格式:svn info [path]

svn mkdir建立納入版本控制下的新目錄 命令格式:svn mkdir path 例: #svn mkdir newdir a

newdir 新增目錄newdir,相當於mkdir newdir和svn add newdir的命令集合。

適用場景1: 乙個問題要合入多個分支,若分支**差異不大,可以在其中乙個分支(a)上修改提交後,使用svn

merge命令將改動合併到另外的分支(b)上。 用法: 在**根目錄下執行: svn merge

–ignore-ancestry -rn-1:n源**路徑 目的**路徑 或使用等價命令 svn merge --ignore-ancestry -c n源**路徑 目的**路徑 其中,n指的的是你在a分支上此次改動提交後的svn版本號;源**路徑和目的**路徑均為本地**的路徑(相對路徑、絕對路徑皆可以)。 舉例:

將a中的改動merge到b中,如果是在b**根目錄下執行,命令如下:

svn merge --ignore-ancestry -rn-1:n a**相對路徑 . (「.」代表當前目錄) 注意事項: 執行此命令後一定要檢查檔案狀態,有時候會附帶著改動一些其他檔案的屬性,修改svn:mergeinfo,此類修改只是更改檔案的合併資訊對功能無任何影響,不過建議將這些檔案revert掉再生成diff檔案檢查自己的改動是否正確,

最後編譯版本做功能驗證,驗證通過後再提交(svn commit)至專案倉庫。 補充:使用svn

merge命令移植**用於問題已合入merge源分支的情況下。若問題未合入任何分支則可使用如下方法:

如果**在a分支中,尚未合入,則可先生成diff檔案: svn diff [path1] [path2] [path3] >

***.diff 然後進入b分支同級目錄,執行patch -p0 <

***.diff,即可匯入修改。(因二進位制檔案無法生成diff,所以也無法通過patch將二進位制檔案的變更移植到其他分支。)

注意:產生衝突時,會生成與衝突檔案對應的衝突檔案(字尾與svn操作時生成的衝突檔案不同),可用於人工解決衝突。

適用場景2: 回退問題單。 用法: 在**根目錄下執行以下命令

svn merge --ignore-ancestry -rn:n-1 . (「.」代表當前目錄,不可省。) 或使用等價命令svn merge --ignore-ancestry -c -n . n代表此次要被回退的問題單之前合入**時的svn版本號。 舉例:

將主線分支中合入的bug11373回退掉。(bug11373合入主線後的svn版本號為16534。)

在本地主線**工作拷貝根目錄下執行svn merge回退此次合入的修改,並將回退操作由工作拷貝提交至專案倉庫。 svn merge

–ignore-ancestry -r16534:16533 . ( 或svn merge --ignore-ancestry -c -16534 . ) svn ci -m 「rollback bug11373」 svn help幫助 命令格式:svn help [子命令] 描述本程式或其子命令的用法。

linux下svn常用命令

1 將檔案checkout到本地目錄 svn checkout path path是伺服器上的目錄 例如 svn checkout svn 簡寫 svn co 2 往版本庫中新增新的檔案 svn add file 例如 svn add test.php 新增test.php svn add php ...

linux下svn常用命令

列出幾個常用到的linux svn命令 svn checkout path path是svn位址 如 svn checkout 簡寫 svn co svn add path 如 svn add test.cpp svn commit m 修改資訊 path 如 svn commit m 新增make...

linux下svn常用命令

1 將檔案checkout到本地 svn checkout path path是伺服器的目錄 例如 svn checkout svn 2 往版本庫中新增新的檔案 svn add filename 例如 svn add test.cpp 3 將改動的檔案提交到版本庫 svn commit m 注釋 n...