之前在公司一直使用git,如今公司有用svn,一時間還真的不知道如何下手,在網上搜尋了不少大神和官網文檔的指導,總結了下面一份教程,但願可以幫助你們快速上手,若是想更細緻的瞭解相關內容,能夠點擊每一個小節裏提供的的連接。html
一、Windows下命令行工具:linux
發現原來安裝的tortoisesvn已經集成到shell中,不能在命令行下使用。因而找到這個http://www.visualsvn.com/downloads/git
下載Apache Subversion command line tools,這是一個能夠在cmd下使用的命令行工具,解壓後把裏面bin目錄這個路徑添加到環境變量的path,這樣在cmd下就可使用了,和linux下使用svn的習慣同樣了。shell
二、簡明教程:服務器
http://www.flyne.org/article/851併發
目錄約定:分佈式
1)使用trunk做爲主要的開發目錄svn
通常的,咱們的全部的開發都是基於trunk進行開發,當一個版本(release)開發告一段落(開發、測試、文檔、製做安裝程序、打包等結束後),代碼處於凍結狀態(人爲規定,能夠經過hook來進行管理)。此時應該基於當前凍結的代碼庫,打tag。工具
當下一個版本/階段的開發任務開始時,繼續在trunk進行開發。此時,若是發現了上一個已發行版本(Released Version)有一些bug,或者一些很急迫的功能要求,而正在開發的版本(Developing Version)沒法知足時間要求,這時候就須要在上一個版本上進行修改了。解決方法是基於發行版對應的tag,作相應的分支(branch)進行開發。測試
2)下圖爲struts2的SVN倉庫目錄:
三、經常使用命令
svn help
svn --version
svn --version --quiet 只顯示版本號
svn checkout 地址
svn add 文件或者文件夾 增長本地數據到服務器
svn commit / svn ci -m 「註釋」 文件名 提交代碼,要先add才commit
svn update / svn up 沒必要跟特定的文件或目錄,也能夠本身指定須要更新的文件或目錄。每次commit或者改動以前最好更新一下。
svn log
svn delete 文件名
svn resolve 路徑 --accept working 解決衝突
http://zccst.iteye.com/blog/1765519
svn switch 遠程路徑 版本切換
svn list 路徑 / svn ls 列出版本庫下的文件和目錄
svn merge -r m:n 路徑 合併文件,從版本號m到版本號n的遠程分支都合併到當前分支中
svn info 確認工做目錄的svn信息
svn diff -r m:n 路徑 對版本m和版本n比較差別
svn cleanup 爲失敗的失誤清場
svn status -v 在本地進行代碼修改,檢查修改狀態
svn import 遠程路徑 --message 「message」 將當前路徑下文件導入到版本庫中
svn export 遠程路徑 導出一份乾淨的項目
svn move/ svn mv 原文件名 新文件名 重命名
svn mkdir 文件名
svn copy / svn cp 源文件路徑 新文件路徑
svn revert 文件名 只能恢復未提交以前的操做
若要還原已提交的改動:只能用舊文件覆蓋新文件。操做以下:
1)sun up 讓本地工做拷貝更新到最新狀態 2)svn
log your_file_path 查看文件日誌,這時候提交時填寫的說明信息就派上用場了
3)svn diff
-r 舊修訂版序號:新修訂版序號 your_file_path 查看兩個修訂版之間的不一樣。
4)決定用哪一個舊的修訂版號後,用舊的修訂版號文件覆蓋新的修訂版號文件。svn
merge -r 新修訂版序號:舊修訂版序號 your_file_path
5)svn commit -m "恢復到某修訂版(某修訂版做廢)"
本地的版本叫作working copy
四、關於merge
branch主要用於新功能的開發
合併發生在本地working copy,只要你不提交就不會影響到repository
合併前必定要先update、commit,保證不會out of day,並將本地的修改保存到repository
branch和trunk並行開發的過程當中,要常常同步,將trunk的修改合併到branch,合併時選擇"Merge a range of revision"
branch最後合併回trunk時,merge type選擇"Reintegrate a branch"
不論是從trunk合併到branch仍是最終從branch合併回trunk,在每次合併前最好先update,而後將本地的修改先所有commit,保護好現場,萬一合併不理想隨時均可以revert http://blog.csdn.net/eggcalm/article/details/6606520
http://zhengkun.readthedocs.org/zh_CN/latest/2014/02/07/svn-usage/
五、關於解決衝突
發生衝突以後會出現三個臨時文件:
XXX.mine XXX.r1 XXX.r2
一旦解決了衝突,需用svn resolved讓subversion知道,這樣就會刪除這三個臨時文件,衝突狀態解決。
三種解決方式:
手工合併衝突:須要將衝突標誌刪除
用svn revert 放棄本地修改,不須要執行resolved
六、高級教程 很棒!!
https://i18n-zh.googlecode.com/svn/www/svnbook-1.4/index.html
七、Git和SVN的區別
http://blog.csdn.net/bruce_6/article/details/38299677
Git是分佈式svn是集中式;svn只有一箇中央版本庫,而git有無限個;svn有全局的版本號,git沒有;git沒必要聯網就能夠看到全部的log,svn必須聯網;git保存的是元數據,svn是複製整個文檔;git強調分支,svn只是不一樣的文件目錄,就是copy。