@(〓〓 iOS-實用技術(shù))[代碼管理 Git/SVN]
- 作者: Liwx
- 郵箱: 1032282633@qq.com
目錄
- 01.源代碼管理之SVN命令的使用,Cornerstone基本使用,Xcode Svn的使用
- 1.UNIX基本命令
- 1.1 必學命令
- 1.2 常用命令
- 1.3 UNIX基本知識
- 1.4 使用注意
- 2.掌握-SVN終端演練(個人開發(fā))
- 2.1 命令格式
- 2.2 必學命令
-
- SVN命令的使用
- 3.1 項目經(jīng)理初始化項目,并上傳到SVN服務器
- 3.2 程序猿從服務器下載一份完整代碼到本地開始開發(fā)
- 3.3 修改文件提交
- 3.4 新建文件提交
- 3.5 刪除文件提交
- 3.6 常用命令補充
- 3.7 版本控制中,各個文件狀態(tài)參考
- 3.8 注意事項
- 4.SVN終端演練(多人開發(fā))
- 4.0 準備工作
- 4.1 添加文件同步
- 4.2 修改文件同步
- 4.3 刪除文件同步
- 4.4 多人合作開發(fā)中的常見問題
- 5.版本回退
- 5.1 版本回退概念以及原因?
- 5.2 修改了,但未提交的情況下, 回退代碼
- 5.3 修改了,并且提交了的情況反悔
- 6.Cornerstone基本使用
- 6.1 Cornerstone功能介紹
- 6.2 Cornerstone checkout遠程倉庫遠程倉庫區(qū)域
- 6.3 Cornerstone checkout遠程倉庫本地倉庫區(qū)域
- 6.4 忽略沒必要提交的文件
- 7.Xcode管理SVN
- 7.1 基本操作
- 7.2 版本回退
- 7.3 超時和沖突
- 解決超時和沖突的問題
- 8.SVN目錄規(guī)范
- 9.SVN 托管平臺
- 9.1 svnspot
- 9.2 svnchina
1.UNIX基本命令
1.1 必學命令
-
help [子命令]
: 查看某一個具體的子命令的使用方法
1.2 常用命令
-
cd path
: 將當前路徑切換到path路徑 -
pwd
:查看當前所在路徑 -
ls (-a / -l / -G)
: 查看當前文件夾下所有文件及文件夾 -
touch filename1 filename2
: 創(chuàng)建一個或者多個文件 -
rm filename
: 刪除文件 -
open filename
:打開文件 -
cat filename
:查看文件內(nèi)容 -
more filename
:分頁查看文件內(nèi)容 -
mkdir 文件夾名稱
:創(chuàng)建一個文件夾 -
mv oldFilePath newFilePath
:移動文件(可借助此命令給文件重命名)
1.3 UNIX基本知識
.
代表當前文件路徑
..
代表上級目錄
以 .開頭的文件,代表隱藏文件
- 顯示隱藏文件
defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder - 不顯示隱藏文件
defaults write com.apple.finder AppleShowAllFiles No && killall Finder
1.4 使用注意
- 命令和參數(shù)之間需要添加空格
- 如果要使用當前目錄中的文件名账锹,輸入到一半時畸陡,按
TAB鍵能夠補全
.
2.掌握-SVN終端演練(個人開發(fā))
2.1 命令格式
-
SVN命令格式
命令行格式:
svn <subcommand> [options] [args]
svn 子命令 [選項] [參數(shù)]
其中中括號里面的內(nèi)容可以省略
2.2 必學命令
-
SVN查詢命令help
svn [子命令] --help
svn help [子命令]
3. SVN命令的使用
3.1 項目經(jīng)理初始化項目,并上傳到SVN服務器
- 1.1 方案1
- (1) 創(chuàng)建項目
- (2) `svn import [path] URL --username=用戶名 --password=密碼 -m "注釋"`
- 1.2 方案2(推薦)
- (1) `svn checkout URL [path] --username=用戶名 --password=密碼` : 初始化本地倉庫
- (2) 創(chuàng)建項目
- (3) 使用 `svn add` 命令將項目所有文件添加到本地版本控制
- (4) 使用 `svn commit` 提交本地項目到遠程服務器
3.2 程序猿從服務器下載一份完整代碼到本地開始開發(fā)
svn checkout URL [path] --username=用戶名 --password=密碼
3.3 修改文件提交
(1) 修改文件
(2) 使用svn commit -m "注釋" : 提交本地文件到服務器
3.4 新建文件提交
(1) 新建文件
(2) 使用svn add
命令將項目所有文件添加到本地版本控制
(3) 使用 svn commit -m "注釋" : 提交本地項目到遠程服務器
3.5 刪除文件提交
一定不要手動刪除文件
(1)svn remove filename 或者 svn delete filename
從本地版本控制以及對應文件刪除
(2) svn commit -m "注釋" : 提交本地操作到服務器, 使服務器也刪除對應的文件
3.6 常用命令補充
- svn status
查看當前工作空間內(nèi), 所有 有變化的文件 的狀態(tài)
如果執(zhí)行此命令什么都沒輸出, 代表本地沒有東西要提交 - svn log
查看當前版本的操作日志(什么人, 什么時間, 做了什么操作)
3.7 版本控制中,各個文件狀態(tài)參考
' ' 沒有修改
'A' 被添加到本地版本控制
'C' 沖突
'D' 被刪除(通過svn命令刪除的文件)
'I' 被忽略
'M' 被修改
'R' 被替換
‘G’ 被合并
‘U’ 已經(jīng)更新
‘E’ 已經(jīng)存在
'X' 外部定義創(chuàng)建的版本目錄
'?' 文件沒有被添加到本地版本控制
'!' 文件丟失或者不完整(不是通過svn命令刪除的文件)
'' 受控文件被其他文件阻隔
3.8 注意事項
- 任何本地的操作, 如果想讓服務器也做同樣的操作, 就直接通過
commit操作 提交到服務器
- 任何向服務器提交的操作,
都要加注釋 添加 -m參數(shù)
4.SVN終端演練(多人開發(fā))
4.0 準備工作
CoderOne代表程序猿一,CoderTwo代表程序猿二
CoderOne和CoderTwo,分別使用
svn checkout URL [path] --username=用戶名 --password=密碼
命令初始化本地版本控制庫
4.1 添加文件同步
- 1.CoderOne創(chuàng)建文件并提交到服務器
svn add fileName
svn commit -m "新增文件"
- 2.CoderTwo從服務器更新文件
svn update
4.2 修改文件同步
- 1.CoderOne修改文件并提交到服務器
svn commit -m "修改文件"
- 2.CoderTwo從服務器更新文件
svn update
4.3 刪除文件同步
- 1.CoderOne刪除文件并提交到服務器
svn delete fileName
svn commit -m "刪除文件"
- 2.CoderTwo從服務器更新文件
svn update
4.4 多人合作開發(fā)中的常見問題
-
1.問題一 :
超時
- 問題描述:
當本地文件版本小于服務器文件版本時, 如果要提交本地文件,就會報
out of date
超時錯誤- 產(chǎn)生原因:
SVN通過版本號管理每一個文件,如果一個文件被修改并提交到服務器,那么服務器上的對應文件版本號就會加1, 如果你的版本號小于服務器版本號,就說明,肯定有別人在后來又修改了那個文件
- 解決方案:
針對于超時問題,對應的解決方案,就是先從服務器更新下最新版本, 保證本地版本號與服務器版本號一致,這是文件可以提交的前提
-
2.問題二 : 沖突
- 問題描述:
為了解決超時問題,只能更新.而在更新過程中,如果幾個人修改了同一文件的同一行代碼,此時就會產(chǎn)生沖突
- 產(chǎn)生原因:
版本控制器不會那么智能, 去決定應該使用誰的代碼作為最終代碼,只能將選擇權(quán)拋給用戶,讓用戶解決
- 解決方案:
系統(tǒng)提供三種解決方案:
(p)postpone
,
延遲處理(待會我自己處理), 如果選擇這一種, 會自動生成三個文件供用戶參考決策. 并將沖突部分代碼塊合并到一起. 而一旦解決完畢, 需要執(zhí)行 svn resolved fileName 來告訴版本控制器已經(jīng)解決, 然后版本控制器就會自動刪除三個參考文件(mc)
mine-conflict
使用我的(本地的), 如果代碼產(chǎn)生沖突, 則以本地代碼為準(tc)
theirs-conflict
使用他人的(服務器), 如果代碼產(chǎn)生沖突, 則以服務器代碼為準
<<<<<<< .mine
此處代表是我的代碼
=======
此處代表服務器代碼
>>>>>>> .r7
5.版本回退
5.1 版本回退概念以及原因?
概念: 是指將代碼(本地代碼或者服務器代碼), 回退到之前記錄的某一特定版本
原因: 如果代碼做錯了, 想返回之前某個狀態(tài)重做;
5.2 修改了,但未提交的情況下, 回退代碼
方案1: (大力推薦)
svn revert
(作用:返回到上次提交后版本對應的最原始的狀態(tài))
方案2: (不推薦)
刪除整個項目,重新checkout
5.3 修改了,并且提交了的情況反悔
-
方案1: 大力推薦
-
svn update
(作用: 將本地代碼更新到與服務器相同的版本) -
svn merge 文件名 -r 版本1:版本2
(作用: 把版本1 -> 版本2 的 diff 作用在當前版本) -
svn commit -m “本地和服務器都回退到某一指定版本”
(作用: 讓服務器代碼也退回到之前某個版本狀態(tài))
-
-
方案2:
-
svn update -r 指定版本號
(此時本地代碼已經(jīng)變化,但是服務器沒有改變)
--------以下步驟是為了讓服務器代碼也回滾到以前的版本---------- - 修改部分文件
-
svn update
(此時會產(chǎn)生沖突, 選擇使用自己的代碼即可) - 再次提交代碼
-
-
方案3:
- 手動保存需要回退的文件內(nèi)容
- 刪除文件,提交到服務器
- 重新添加文件,上傳到服務器
6.Cornerstone基本使用
- 1.掌握如何添加遠程代碼倉庫的關(guān)聯(lián)
- 2.掌握如何checkout, 下載服務器代碼, 以及初始化本地版本控制庫
- 3.掌握如何新建文件提交, 修改文件提交, 刪除文件提交
- 4.掌握版本日志查看, 以及了解版本回退
- 5.掌握多人開發(fā)中的超時問題和沖突問題的解決
6.1 Cornerstone功能介紹
- 1.Cornerstone界面區(qū)域
- 1.頂部工具條區(qū)域
- 對應svn命令: checkout(檢出),tag(重要版本備份),branch(分支),revert(重置),update(更新),commit(提交),merge(合并),import(導入),export(導出)
- 2.本地倉庫區(qū)域
- 3.遠程倉庫區(qū)域
- 4.選中倉庫區(qū)域
- 5.底部工具條區(qū)域
- 對應svn命令: add(添加),resolved(解決沖突),log(查看日志)
- Timeline: 各版本的內(nèi)容比較
- 1.頂部工具條區(qū)域
- 2.頂部工具條
- 3.底部工具條
6.2 Cornerstone checkout遠程倉庫遠程倉庫區(qū)域
- checkout遠程倉庫到
遠程倉庫區(qū)域
6.3 Cornerstone checkout遠程倉庫本地倉庫區(qū)域
- checkout遠程倉庫到
本地倉庫區(qū)域
6.4 忽略沒必要提交的文件
-
開發(fā)經(jīng)驗: 最好忽略沒必要提交的文件
- 過濾不需要上傳的文件, 忽略文件(xcuserdata文件夾)
文件打開狀態(tài)
斷點信息
文件夾關(guān)閉打開狀態(tài)- 注意:projct setting文件不要忽略
存放一些文件順序和文件夾結(jié)構(gòu),文件引用等信息
- 忽略或刪除文件操作
7.Xcode管理SVN
- 1.掌握怎樣添加遠程代碼倉庫的關(guān)聯(lián)
- 2.掌握怎樣checkout, 下載服務器代碼, 以及初始化本地版本控制庫
- 3.掌握怎樣新建文件提交, 修改文件提交, 刪除文件提交
- 4.掌握版本日志查看, 以及了解版本回退
- 5.掌握多人開發(fā)中的超時問題和沖突問題的解決
7.1 基本操作
- 1.管理帳號
- command + ,選中Account
- 2.Xcode checkout項目操作
- 打開Xcode選中Source Control/Check out,選中以上配置項目
- 根據(jù)提示保存到本地文件夾中
- 3.Xcode版本比較,責任追究,日志查看
- 4.XCode SVN提交
- 5.Xcode中的Source Control介紹
7.2 版本回退
- 1.單個文件版本回退
7.3 超時和沖突
解決超時和沖突的問題
-
超時提示
: 當修改完文件,使用Xcode中的Source Control/Commit提交時彈出以下提示表示超時up to date
解決超時方案
1.先更新Update
2.更新完后,彈出沖突提示
3.根據(jù)實際情況選擇對應的沖突解決方案
4.最后修改完沖突后,點擊Update提交到服務器,必須填寫提交信息,否則無法提交.
8.SVN目錄規(guī)范
-
1.文件目錄作用?
- trunk : 主干易核,當前開發(fā)項目的主目錄;
我們之前更新代碼,提交代碼都是在這個文件夾進行操作 - brannches:分支目錄
添加非主線功能時使用,開發(fā)測試之后装蓬,可以合并到主干項目中橙垢。修復Bug,研發(fā)不確定的新功能都在這里做 - tags:標記目錄额获,通常作為重大版本的備份;
如果有發(fā)布版本出現(xiàn)Bug恭应,可以快速的找到對應版本的項目備份抄邀,然后開一個分支,進行Bug修復昼榛,用于與主干區(qū)分
- trunk : 主干易核,當前開發(fā)項目的主目錄;
2.掌握利用圖形客戶端版本備份流程
3.了解已發(fā)布版本bug解決流程