SVN服務(wù)器相關(guān)配置(倉庫|用戶|組|訪問)
//http://xxx.xxx.xxx.xxx/svn/XYF/ 注意:路徑中應(yīng)該使用ip地址來替換掉計算機的名稱
項目組長對項目進行初始化工作
01 項目組長需要連接到遠程的SVN倉庫,把倉庫下載到自己的電腦上
$ svn checkout http://xxx.xxx.xxx.xxx/svn/XYF/ --username=manager --password=manager
02 切換到code路徑中,創(chuàng)建Main.m文件
$ touch Main.m
03 查看本地倉庫中文件的狀態(tài)
$ svn status? //? 表示該文件沒有被SVN管理
04 把新創(chuàng)建的文件納入到SVN的管理者,查看文件狀態(tài)
$ svn add Main.m //A 表示該文件被添加到SVN
05 把本地倉庫的更改(創(chuàng)建新的文件)提交到遠程的服務(wù)器
$ svn commit -m "創(chuàng)建了Main文件" Main.m? //注意每次提交的時候都需要寫上注釋
06 修改Main.m文件
$ echo "Main.m文件" > Main.m
07 查看文件的狀態(tài)
$? svn status //M 表示該文件被修改
08 把本地的更改提交到遠程的服務(wù)器
$ svn commit -m "修改了文件" Main.m
SVN命令行刪除文件
01 項目組長刪除Main.m文件,文件狀態(tài)為D
$ svn remove Main.m
02 把本地的更改(刪除操作)提交到遠程的服務(wù)器
$ svn commit -m "刪除了文件" Main.m
SVN相關(guān)命令行的簡寫
checkout -- co
status? -- st
commit? -- ci
remove? -- rm
update? -- up
查看版本信息
01 首先需要更新獲得最新的倉庫信息
$ svn update |svn up
02 查看倉庫的版本信息
$ svn log
新同事張三加入開發(fā)涉及操作
01 張三加入公司開發(fā),分配SVN賬號,賬號=密碼=zhangsan,并且設(shè)置權(quán)限
02 張三連接到遠程的服務(wù)器,把倉庫下載到本地
$ svn checkout http://xxx.xxx.xxx.xxx/svn/XYF/ --username=zhangsan --password=zhangsan
03 張三切換路徑到code,創(chuàng)建Dog.h Dog.m 文件
$ touch Dog.h Dog.m
04 查看文件的狀態(tài)(? 注意新創(chuàng)建的文件默認是不會自動被SVN管理的)
$ svn status
05 把新添加的文件納入到SVN的管理中
$ svn add Dog.h Dog.m |svn add *(表示把當前文件路徑中所有的文件都添加到SVN版本庫中)
06 張三把本地的更改提交到遠程的倉庫
$ svn commit -m "創(chuàng)建了狗類" Dog.h Dog.m //可以不跟具體的文件名,如果不寫那么表示把所有的更改提交
07 項目組長更新獲得最新的代碼
$ svn update
08 項目組長修改Dog.h文件.往文件中輸入內(nèi)容-hello Dog!
$ echo "hello Dog" >Dog.h
09 項目組長把更改提交到遠程的倉庫
$ svn commit -m "修改了文件輸入hello Dog" Dog.h
10 張三更新獲得最新的倉庫信息
$ svn update
多人開發(fā)的時候可能會產(chǎn)生沖突
01 項目組長往Dog.h文件中的第二行中寫入數(shù)據(jù) "你好,我是項目組長",把更改提交到遠程的倉庫
$ svn commit -m "輸入你好,我是項目組長字符串" Dog.h
02 如果張三沒有更新代碼,就直接修改了同一個地方
$ svn commit -m "輸入我是張三字符串" Dog.h
==error== is out of date 該文件過期:如果當前的版本低于服務(wù)器的版本那么無法提交成功
03 張三需要先更新獲得最新的倉庫信息
$ svn update //產(chǎn)生了沖突
解決沖突
解決沖突01-使用tc
//tc 使用服務(wù)器端的數(shù)據(jù)內(nèi)容來覆蓋掉我本地的數(shù)據(jù)內(nèi)容
解決沖突02-使用mc
//mc 以我的為準,用本地的數(shù)據(jù)內(nèi)容覆蓋掉服務(wù)器端的,版本號 + 1
//+ 還需要做一次提交
$ svn commit -m "解決了沖突以mc的方式" Dog.h
解決沖突03-使用postpone(resolved)
//p 手動的解決沖突
(1) 打開有沖突的文件,把沖突解決(刪除特殊字符)
(2) 通過命令行告訴SVN已經(jīng)手動的把沖突解決了 $ svn resolved Dog.h
(3) 把更改提交到遠程的倉庫 $ svn commit -m "解決沖突使用p" Dog.h
SVN版本回退操作(revert|merge)
版本回退的兩種情況:
01 本地的代碼做了修改,該修改還沒有提交到遠程倉庫,取消更改
$ svn revert Dog.h
02 本地的代碼做了修改,該修改已經(jīng)被提交到遠程倉庫,回退到上一個版本
[1] 回到指定的版本 svn update -r版本號
$ svn update -r14
$ svn commit -m "Dog文件回退到上一個版本" Dog.h //直接提交沒有反應(yīng)(不能使用這種方式版本回退)
[2] 版本回退
(1)先更新獲得最新的版本? $ svn update
(2)用指定版本的內(nèi)容來覆蓋當前版本的內(nèi)容
$ svn merge -r15:r14 Dog.h //表示使用第14個版本的Dog.h文件內(nèi)容來覆蓋掉第15個版本的內(nèi)容
(3)還需要把更改提交到遠程倉庫
$ svn commit -m "Dog文件回退到上一個版本"
圖形化界面工具連接上SVN服務(wù)器
01 連接到遠程的倉庫
02 把遠程倉庫中的代碼下載到本地-checkout
使用圖形化界面工具來進行項目初始化配置
01 使用Xcode創(chuàng)建一個新的項目放在本地的倉庫中
新創(chuàng)建的項目,默認會自動做一次add添加操作,?=>A
02 使用圖形界面工具提交代碼到遠程的服務(wù)器,選擇commit按鈕,之后會彈框提示:檢測到有需要忽略的文件,應(yīng)該如何處理?
03 選擇ignore,添加注釋,點擊右下角的commit changes
04 繼續(xù)處理忽略操作
設(shè)置倉庫的忽略文件
01 哪些文件是需要忽略的[2]userdata 保存斷點信息|目錄的展開情況
02 首先先把需要忽略的文件userdata刪除,commit提交更改到服務(wù)器(需要寫注釋-commit changes)
03 要重新生成這兩個文件(使用Xcode把項目打開,在項目中隨便添加一個斷點信息,隨便修改一行代碼,然后編譯)
04 手動的忽略這兩個文件(1)直接commit 提交,選擇ignore (2)分別設(shè)置兩個文件都忽略,然后提交
05 完成忽略操作之后,提交(commit)會報錯(有沖突)
06 先更新,再提交
07 驗證忽略操作是否完成(使用Xcode打開項目,修改某個文件,選擇Source Control-Commit),如果發(fā)現(xiàn)只有一個文件是被更改的,需要提交那么就說明忽略操作已經(jīng)成功了