天天看點

Linux下常用svn指令Linux下常用svn指令常用指令不是常用的指令如下:

Linux下常用svn指令

常用指令

1、svn checkout path

path 是伺服器上的目錄。

svn checkout path
例如:svn checkout  svn://192.168.1.1/pro/domain
簡寫:svn co
           

1.1 svn checkout path subv

這樣将把你的工作拷貝放到subv而不是和前面那樣放到trunk

2、svn add file

file是某個檔案或者某個目錄,如果添加所有的檔案則用點“.”表示。

svn add file
例如:svn add test.php
svn  add  *.php(添加目前目錄下所有的php檔案)
svn add . (表示添加所有檔案)
           

3、svn commit

送出檔案到伺服器。

svn commit -m “LogMessage“ [-N] [--no-unlock] path(如果選擇了保持鎖,就使用–no-unlock開關)
例如:svn commit -m “add test file for my test”  test.php
簡寫:svn  ci
           

一般步驟:

  • step-1:

    svn update

  • step-2:

    svn add file、svn delete file

  • step-3:

    svn commit -m “送出檔案到遠端伺服器”

4、svn lock

加鎖/解鎖指令。

svn lock -m “LockMessage” [--force] path
例如:svn lock -m “lock test file”  test.php
svn unlock path
           

5、svn update

更新版本指令。

svn update -r m path
例如:
1、  svn update 後面沒有目錄,預設更新目前目錄及子目錄的所有檔案到最新版本。
2、  svn update -r 200 test.php (将版本庫中的檔案test.php還原到版本200)
簡寫:svn up
           

update指令還可以進行檔案恢複。

(1)不小心寫錯了很多東西,想撤銷所寫的東西(已經把修改送出到伺服器)


svn update -r 版本号

(2)不小心删錯了檔案,想把檔案恢複回來(已經把删除送出到伺服器)


svn update -r 版本号

6、svn status

svn status -v path
svn status path
簡寫:svn st
           

顯示檔案和子目錄的狀态。

第一列保持相同,第二列顯示工作版本号,第三和第四列顯示最後一次修改的版本号和修改人。

注:

svn status

svn diff

和 

svn revert

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

檔案狀态描述

  • A 被添加到本地代碼倉庫
  • ' ' 沒有修改
  • C 沖突
  • D 被删除
  • I 被忽略
  • M 被修改
  • R 被替換
  • X 外部定義建立的版本目錄
  • ? 檔案沒有被添加到本地版本庫内
  • !檔案丢失或者不完整(不是通過svn指令删除的檔案)
  • ~ 受控檔案被其他檔案阻隔

7、svn delete

删除檔案。

svn delete path -m “delete test file”
例如:
1、删除遠端伺服器檔案
svn delete svn://192.168.1.1/pro/domain/test.php  -m “delete test file”
2、删除本地檔案,然後送出
svn  delete test.php, 然後再svn ci -m “delete test file”,推薦使用這種
簡寫:svn (del, remove, rm)
           

8、svn log

檢視日志。

svn log path
例如:svn log test.php 顯示這個檔案的所有修改記錄,及其版本号的變化。
           

如果在工程的根目錄使用該指令可能會列出非常多的日志内容,是以為了查找友善,我們通常會使用一些附加參數來配合svn log指令的使用。

檢視一段日期的日志

svn log -r {2018-07-03}:{2018-07-09}
           

顯示某一版本範圍的log清單

顯示從r199687到r199385範圍的所有帶jaspersong字元串的log (grep下面介紹)

svn log -r r103546:r104414 | grep -A 2 jaspersong
           

這裡說明一下

grep -A 2 "jasper"

|中A後面數字的差别,不同的數字表示顯示的log版本資訊不同的行數。

檢視某一版本所修改的檔案清單及說明

此命名用得比較多。

svn log -r r196674 -v
           
Linux下常用svn指令Linux下常用svn指令常用指令不是常用的指令如下:

查找分支所有的修改

svn log -v --stop-on-copy $URL
           

9、svn info path

檢視檔案詳細資訊。

例如:svn info test.php
           

10、svn diff path

預設将修改的檔案與基礎版本比較。

例如:svn diff test.php
svn diff -r m:n path(對版本m和版本n比較差異)
例如:svn diff -r 200:201 test.php
簡寫:svn di
           

11、svn merge -r m:n path

Linux指令行下将兩個版本之間的差異合并到目前檔案。

svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200與205之間的差異合并到目前檔案,但是一般都會産生沖突,需要處理一下。
           

12、svn help

Linux指令行下SVN 幫助。

svn help ci
           

不是常用的指令如下:

13、svn list path

顯示path目錄下的所有屬于版本庫的檔案和目錄。

簡寫:svn ls
           

14、svn revert path

下面兩種情況都可以用revert指令恢複。

  • (1)不小心寫錯了很多東西,想撤銷所寫的東西(還未把修改送出到伺服器)
  • (2)不小心删錯了檔案,想把檔案恢複回來(還未把删除送出到伺服器)

    注意: 本子指令不會存取網絡,并且會解除沖突的狀況。但是它不會恢複被删除的目錄。【還不沒實踐過,不知道不會恢複本地删除的目錄是什麼意思】

15、svn resolved path

移除工作副本的目錄或檔案的“沖突”狀态。

用法: svn resolved path
           

注意: 【本子指令不會依文法來解決沖突或是移除沖突标記;它隻是移除沖突的相關檔案,然後讓 path 可以再次送出。】

16、svn copy建立分支

  • 建立分支參考資料:

    https://www.cnblogs.com/huang0925/p/3254243.html

    https://blog.csdn.net/yangzhongxuan/article/details/7519948

    https://blog.csdn.net/min954584739/article/details/78114273

  • 從主幹上建立分支。
svn cp -m "create branch"  http://svn_server/xxx_repository/trunk  http://svn_server/xxx_repository/branches/br_feature001 
           
  • 獲得分支
svn co http://svn_server/xxx_repository/branches/br_feature001
           
  • 主幹合并到分支
cd br_feature001 

svn merge http://svn_server/xxx_repository/trunk
           
  • 分支合并到主幹

    一旦分支上的開發結束,分支上的代碼需要合并到主幹。SVN中執行該操作需要在trunk的工作目錄下進行。指令如下:

cd trunk 
svn merge --reintegrate http://svn_server/xxx_repository/branches/br_feature001 
           

17、分支合并到主幹一

  • 建立分支
svn copy http://example.com/repos/project/trunk http://example.com/repos/project/branches/beta
           
  • 合并分支到主幹

    在分支上,擷取剛開始的版本号

svn log --stop-on-copy  http://example.com/repos/project/branches/search_collect_1108
           

如得到版本号為:12461

在分支上,擷取最新的版本号

svn up
           

如得到版本号為:12767

切換到主幹,然後執行下面指令(後面的路徑為,分支的路徑。)

svn merge -r 12461:12767  http://example.com/repos/project/branches/search_collect_1108
           

18、合并一個分支到主幹二

  • 查找到分支版本

    方法一:進入分支目錄

cd branch 
svn log --stop-on-copy 
           

最後一個r11340就是建立分支時的reversion

方法二: 進入主幹目錄

cd trunk
svn -q --stop-on-copy 分支URL  # 這條指令會查詢出自建立分支以後分支上的所有修改,最下面的那個版本号就是我們要找的版本号. 
示例:svn log -q --stop-on-copy svn://192.168.1.177/tags/beta_2009_12_24 
           
  • 合并到主幹

    指令:svn -r 分支版本号:HEAD 分支的URL 

    解釋:HEAD為目前主幹上的最新版本

示例: 
cd trunk 
svn merge -r 12:HEAD svn://192.168.1.177/tags/beta_2009_12_24 
           

解決沖突:

使用svn st | grep ^C 查找合并時的沖突檔案,手工解決沖突

使用svn resolved filename 告知svn沖突已解決

使用svn commit -m "" 提示合并後的版本

繼續閱讀