Linux下常用svn命令


參考資料:

1、 http://os.51cto.com/art/200908/143157_all.htm
2、 https://www.jianshu.com/p/d3ebfa27b3ba
3、 https://www.kancloud.cn/i281151/svn/197112

背景

版本控制工具svn之前一直用的是客戶端,Linux下命令下沒用過,最近因為項目的一些特性,版本控制需要在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 statussvn diffsvn 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

查找分支所有的修改

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創建分支

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 "" 提示合並后的版本


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM