? ? ? 作為一個習慣命令行的人,很難去接受一個可視化客戶端,如SourceTree、Cornerstone等,雖然看起來可視化工具用起來更方便,但是總是感覺沒有指令來的快,或許是心理原因吧,沒用終端做版控很難體會到用指令的樂趣。
由于現在是用SVN做版控,本文就簡單介紹一下SVN的常用流程,想象一下:你剛剛進入一個新的公司,讓你接手一個正在進行的項目,你打開終端寫下了:svn co svn://192.168.1.1/Code/DPMS 然后就可以在當前目錄里面找到一個叫DPMS的項目,cd DPMS,你瀏覽了幾行代碼,太特么的竟然有bug,你忍不住改了,你要提交了,svn ci -m 'something'? ,成功。你又在DPMS下得app文件夾下添加了幾個.h文件,把整個項目都做完了!你又打開終端:svn add domain/app/*.h 添加成功。太牛逼了,下班了,你去吃了一碗自己最喜歡的老壇酸菜味方便面。
以下是SVN的常用指令:
1、將文件checkout到本地目錄
1、 svn checkout path(path是服務器上的目錄)
2、例如:svn checkout svn://192.168.1.1/pro/demo
3、簡寫:svn co
2、向版本庫中添加新文件
1 、svn add file
2 、例如:svn add test.php(添加test.php)
3、 svn add *.php(添加當前目錄下所有的php文件)
3、將改動的文件提交到版本庫
1、 svn commit -m "LogMessage"
2 、例如:svn commit -m “add test file for my test“ test.php
3、svn ci
4、加鎖/解鎖
1、 svn lock -m “LockMessage“ [--force] PATH
2 、例如:svn lock -m “lock test file“ test.php
3、 svn unlock PATH
5、更新或者回滾到某個版本
1、 svn update -r m path
2、例如:svn update -r22018
3 、svn update如果后面沒有目錄,默認將當前目錄以及子目錄下的所有文件都更新到最新版本。
4 svn update -r 200 test.m(將版本庫中的文件test.php還原到版本200)
5、svn update test.m(更新,于版本庫同步。如果在提交的時候提示過期的話,是因為沖突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
6、簡寫:svn up
6、查看文件或者目錄狀態
1 、svn status path(目錄下的文件和子目錄的狀態,正常狀態不顯示)
2、【?:不在svn的控制中;M:內容被修改;C:發生沖突;A:預定加入到版本庫;K:被鎖定】
3、svn status -v path(顯示文件和子目錄狀態
4、第一列保持相同,第二列顯示工作版本號,第三和第四列顯示最后一次修改的版本號和修改人。
5、注:svn status、svn diff和 svn revert這三條命令在沒有網絡的情況下也可以執行的,原因是svn在本地的.svn中保留了本地版本的原始拷貝。
6、簡寫:svn st
7、刪除文件
1 、svn delete path -m "delete test fle"
2、例如:svn delete svn://192.168.1.1/pro/domain/test.php -m "delete test file"
3、或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推薦使用這種
4、簡寫:svn (del, remove, rm)
8、查看日志
1 、svn log path
2、例如:svn log test.php 顯示這個文件的所有修改記錄,及其版本號的變化
9、查看文件詳細信息
1、 svn info path
2、例如:svn info test.php
10、比較差異
1、svn diff path(將修改的文件與基礎版本比較)
2 、例如:svn diff test.php
3 、svn diff -r m:n path(對版本m和版本n比較差異)
4、例如:svn diff -r 200:201 test.php
5、簡寫:svn di
11、將兩個版本之間的差異合并到當前文件
1、svn merge -r m:n path
2、例如:svn merge -r 200:205 test.php(將版本200與205之間的差異合并到當前文件,但是一般都會產生沖突,需要處理一下)
12、SVN 幫助
svn help
13、版本庫下的文件和目錄列表
1、svn list path
2、顯示path目錄下的所有屬于版本庫的文件和目錄
3、svn ls
14、恢復本地修改
1、svn revert: 恢復原始未改變的工作副本文件 (恢復大部份的本地修改)。
2、revert:用法: revert PATH…
3、注意: 本子命令不會存取網絡,并且會解除沖突的狀況。但是它不會恢復被刪除的目錄
15、解決沖突
1、svn resolved: 移除工作副本的目錄或文件的“沖突”狀態
2、用法: resolved PATH…
3、注意: 本子命令不會依語法來解決沖突或是移除沖突標記;它只是移除沖突的相關文件,然后讓 PATH 可以再次提交。