iOS開發- 版本控制SVN和Git使用詳解

來源:互聯網
上載者:User

標籤:

公司的實際開發中,在天朝使用較多的還是SVN,因為SVN是集中式的,在天朝上班你們都懂的!  -----------------svn-----------------     一:最常用基本步驟--- 
  • 下載(完整下載,第一次),將伺服器的項目下載到本地開始開發
svn checkout ip —uaerbane=? —password=?     //這裡需要add簡:co 
  •  更新倉庫,伺服器項目有變動的時候需要更新到本地,以免錯誤或者衝突
svn updata               //這裡的直接commit就可以了簡:up 
  • 寫代碼。。。。。。。。。。。。。
 
  • 查看狀態
svn  status 簡:st 
  • 添加到倉庫
svn add name 
  • 提交項目

svn commit -m “注釋"

簡:ci

 
  • 版本回退:錯誤操作,需求更改,查看曆史
svn updata r版本號碼   //查看回退版本正式:
    1. svn update
    2. svn merge      -r  版本號碼(現):版本號碼(前) name
    3. svn ci -m “注釋"
 
  • 移除檔案
svn remove name簡:rm  
  • 查看版本號碼
    1. svn updata      //先更新所有資料
    2. svn log            //列印所有版本
  二:衝突解決-------- out of data——
  • —>updata
  • —>commit
(手動解決衝突:postpone):svn resolved name 有效避免衝突:
  • 先updata->子啊修改檔案
  • 或者修改檔案之前和同事打招呼
  補充:當座位一個新?人加?入(李四進?入公司)1.需要做的事情
    • 和項??目經理要svn的伺服器位址/svn帳號和密碼 需求?文檔 : 當前的需求
    • 接?口?文檔 : 接?口?文檔記錄詳細的伺服器所有的接?口 : 界?面到底做成什麼樣?子

2.將伺服器完整的代碼下載到本地

  • svn checkout 伺服器位址 ?使用者名稱和密碼
 3.代碼衝突
    • out of date : 到期
    • df : 在命令?行中給展?示所有的不同的地?方
    • e : 在命令?行編輯衝突
    • s : 展?示可解決衝突的選項
    • mc : 使?用My Code,來覆蓋伺服器代碼
    • tc : 使?用伺服器的代碼,來覆蓋My Code
    • p : 對?比所有的版本變化,?手動解決衝突—>svn resolved person.h
 注意:1>在修改公用?檔案之前,最好先update,然後再修改 2>在修改公用?檔案之前,可以和同事說?一聲,先不要修改?檔案,修改完之後讓同事更 新 三:圖形化介面(UI):Cornerstone/Version

 這裡簡單介紹CornerStone的使用及注意點  --主介面--
 實用Cornerstone需要注意的幾個地方:
    • 1.查看日誌
找到“Log”選項,選擇並點擊。
查看自己當前的版本是否是最新的,如果不是最新的版本,從第2步開始執行;
如果自己當前的版本是最新的,從第3步開始執行;
    • 2.更新到最新版本
當前程式員在開啟工程項目之前,找到“Update to Latest Revision”選項,選擇並點擊。
目的:保持當前程式員用戶端的項目版本是最新的。
    • 3.編輯項目
    • 4.提交之前,再次點擊“Update to Latest Revision”,保持項目是最新版本。
    • 5.更新最新版本後,如果有錯誤,衝突等情況,解決,直到沒錯誤!
    • 6.提交項目,找到“Commit Changes”選項,選擇並點擊。
目的:把當前編輯後的項目提交的伺服器。
    • 7."lock"和“unlock”的使用
當我們正在編輯某個檔案時,為了防止被其他人修改,可以在編輯之前,使該檔案處於鎖定狀態,當我們編輯後,要提交的時候,再解鎖。
    • 8.提交項目,都要寫詳細備忘並署名。
    • 9.恢複到以前的版本,以前其他出錯情況,請參考稍後的文檔說明或上網搜尋。
  最後總結一下使用步驟  

1.項??目經理初始化項??目 1>項??目經理將伺服器已有的內容下載到本地

 
  • 記住選擇正確的svn版本號碼—>1.7 2>項??目經理建立項??目到code?檔案夾 3>項??目經理忽略掉?一些不需要的?檔案
  • Xcode會幫我們記錄當前正在編輯的?檔案,下次開啟時停留在該?檔案
  • Xcode會幫我們記錄??目錄開啟情況,同事不需要共用 斷點資訊同事不需要共用,所有也需要忽略 xcuserdata

2.使?用Xcode的svn注意點 1>當項??目中如果使?用到了靜態庫,必須使?用命令?行將靜態庫添加到svn管理之下 2>項??目中如果使?用storyboard,svn的管理也需要特別注意

 
  • 如果可以使?用xib那麼盡量使?用xib 保證同時只有?一個?人在修改storyboard

3.公司使?用svn技巧 儘可能修改?檔案之前要update,寫?一些代碼之後就?立即提交到伺服器 如果今天寫了很多代碼,建議在下班前半個?小時就提交.

 cornerStone中三個基本目錄的含義:tags,branch,truck 
  • truck主分支,是用來做主方向開發的,一個新模組的開發,這個時候就放在trunk,當模組開發完成後,需要修改,就用branch。
  • branch:是用來做並行開發的,這裡的並行是指和trunk進行比較。
  • tag:是用來做一個milestone的,不管是不是發布版本,但都是一個可用的版本。這裡,應該是唯讀。更多的是一個顯示用的,給人一個可讀的標記。咱們ITOO1.0階段開發完畢,就可以打一個tag,然後進入2.0的開發。tags的作用是將在branches上修改的bug的代碼合并到trunk上時建立個版本標識,以後branches上修改的bug代碼再合并到trunk上時就從tags的version到branches最新的version合并到trunk,以保證前期修改的bug代碼不會再合并。 

        假設個例子,ITOO1.0開發完成,這個時候要做一個tag,tag_release_1_0,然後基於這個tag做發布,比如安裝程式等。trunk進入 1.1的開發,但是1.0發現了bug,那麼就需要基於tag_release_1_0做一個分支(branch),branch_bugfix_1_0,基於這 個branch進行bug修改,等到bugfix結束,做一個tag,tag_release_1_0_1,然後,根據需要決定 branch_bugfix_1_0是否併入主幹(trunk)。

對於svn還要注意的一點,就是它是全域版本號碼,其實這個就是一個tag的標記,所以我們經常可以看到,什麼什麼release,基於xxx項目的 2xxxx版本。就是這個意思了。但是,它還明確的給出一個tag的概念,就是因為這個更加的可讀,畢竟記住tag_release_1_0要比記住一個 很大的版本號碼容易的多。

        SVN真的是一個很強大的工具,他很好的管理了我們的團隊合作。

 -----------------git----------------- git中需要注意的幾個命令(名稱)
  • push:提交到伺服器
  • pull:更新
  • clone:完整下載
  • commit:本地提交
 一.命令?行的演練  1.初始化?一個代碼倉庫
  • git init 
 2.如果使?用git必須給git配置?一個?使用者名稱和郵箱 給當前的git倉庫配置?一個?使用者名稱和郵箱
  • git config user.name “why”
  • git config user.email “why@163.com”

配置?一個全域的?使用者名稱和郵箱
  • git config —global user.name “why”
  • git config —global user.email “why@163.com” 3.初始化項??目
  1. touch main.m : 建立了main.m
  2. git add main.m : 將新添加的?檔案或者修改的?檔案添加到暫存區
  3. git commit -m “初始化項??目”
  4. git add . : 將所有沒有被添加到暫存區或者代碼倉庫的?檔案添加到暫存區

注意:?無論是新添加的?檔案或者修改的?檔案,都需要先通過add命令添加到暫存區中, 之後再通過commit命令添加到本地倉庫中
4.查看?檔案的狀態 git status
  • 紅?色 : 新建立的?檔案或者被修改的?檔案,沒有被添加到暫存區
  • 綠?色 : 表?示?檔案在暫存區,但是沒有被添加到本地倉庫中 5.給命令起別名
    • git config alias.st “status”
    • git config alias.ci “commit -m”
    • git config —global alias.st “status”

6.git刪除?檔案 git rm ?檔案名稱

7.查看版本號碼 git log
  • git reflog
  • git config --global alias.lg "log --color --graph -- pretty=format:‘%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset‘ --abbrev-commit” git lg

8.git的版本號碼是由sha1演算法?產生40位的雜湊值 9.版本回退
  • git reset —hard HEAD : 回退到當前的版本
  • git reset —hard HEAD^ : 回退到上?一個版本 git reset —hard HEAD^^ : 回退到上上個版本 git reset —hard HEAD~100 : 回退到前100版本 git reset -hard 版本號碼(前5位)

                                              
二.團隊開發—共用版本庫
  1. 真實的GIT伺服器的搭建,是?非常繁瑣的事情(Linux) 
  2. 一個?檔案夾
  3. 優盤 
  4. 將代碼託管到別?人的伺服器(Github/OSChina)

1.?檔案夾作為共用版本庫 git init —bare

2.項??目經理將共用版本庫的內容先下載下來 git clone 地址

3.添加需要忽略的?檔案
  • touch .gitignore 去github上搜尋.gitignore->Objective-C git add .gitignore
  • git commit -m “添加了需要忽略的?檔案”

4.項??目經理初始化項??目
  • git commit -m “初始化項??目”—>提交到本地代碼倉庫

5.將項??目push遠程倉庫中 git push origin

6.當原始程式碼控制是使?用GIT,並且在Xcode進?行多?人開發的操作 注意:當使?用GIT,項??目中?用到了靜態庫就不需要通過命令?行進?行添加

三.版本備份(瞭解) 1.1.0版本開發完成,之後對1.0版本進?行備份
  • git tag -a weibo1.0 -m “這個是1.0版本” : 給某?一個版本打上標籤
  • git tag : 查看所有的標籤 2.需要將1.0版本的標籤,push到伺服器
  • git push origin weibo1.0
3.繼續開發2.0版本
4.發現1.0版本有bug,從標籤?裡?面clone 1.0版本,從標籤建立?一個fixbug分?支,在分 ?支中修複bug
  • git clone 共用版本庫
  • git checkout weibo1.0(標籤的名稱)
  • git checkout -b weibo1.1fixbug(分?支名稱)

5.修複後的版本上傳AppStore/將1.0fixbug進?行備份/將1.0fixbug版本和2.0版本 進?行合并\
  • git tag -a weibo1.1 -m “這個是修複了1.0版本bug的1.1版本”
  • git tag
  • git push origin weibo1.1 將?子分?支中代碼合并到主分?支,pull—>weibo1.1fixbug—>push master—>其 它同事更新


6.刪除分?支
  • git branch -r
  • git branch -r -d 分?支名稱

四.將代碼託管到別?人的伺服器?裡?面 1.Github

建立Github上的倉庫
  • 1) HTTPS : http + SSL
  • 2) SSH : 公開金鑰和私密金鑰—>settings—>SSH Keys—>?產生公開金鑰和私密金鑰 刪除代碼倉庫 可以給別?人的代碼提?比較功能/對別?人的代碼重構:fork—>pull Request issues : 給架構作者提問題
  • 2.OSChina(Github上?面項??目不能私人化:交錢可以) 建立代碼倉庫

HTTPS/SSH
.gitignore不夠完整 : ?手動添加完成 如果項??目想要多?人開發:管理—>成員管理—>新增成員:讓新?人註冊?一個 OSChina

 圖形化介面(UI):Cornerstone/Version   這裡只大致介紹sourceTree,畢竟在中國Git使用並不常見SourceTree

作為一個懶人 Git的命令列我是不太愛的 所以GUI的工具就成了我的首選
Mac下的Git工具真是五花八門 著名的有Tower SmartGit等等(更多可以看下這裡的介紹)

今天我們介紹的是SourceTree 出品方為Atlassian 旗下的產品還有著名的track工具JIRA Github的競爭者Bitbucket等等(這兩個我也是經常用的 尤其是BitBucket 支援免費私人倉哦~) 

SourceTree的特點如下

  • 免費
    SourceTree是免費使用的 只要簡單的註冊一下就好了
  • 跨平台
    Windows和Mac都可以用
  • 完美支援Github和Bitbucket
    我所有Github和Bitbucket上的項目都是用它來管理的 當然 公司的項目也是用SourceTree管理 無不干擾
  • 支援Git Flow
    Git Flow(翻譯版)是一套關於Git的使用實踐 現在已得到廣泛的認可和推廣 如果使用得當 開發管理的過程將變得更輕鬆和清晰
  這是SourceTree的Repo列表介面 也是開啟時的預設介面 這裡可以對所有的Repo進行統一的管理 也支援分組這是SourceTree的Repo詳情介面 這裡是單獨對某個Repo操作的地方 Git的所有操作你都可以在GUI上進行 非常的方便順手 具體細節就請自己使用之後慢慢體會吧 這裡就不多介紹了  -----------------Xcode----------------- 上面的SVN和Git其實都可以在Xcode中直接使用,如果你只是簡單的實現提交和補救伺服器倉庫裡面的代碼,使用Xcode基本上就可以實現了,但是有的時候可能Xcode不能滿足我們的要求或者相對比較麻煩,所以我們一般情況都不會立刻就選擇Xcode的,除非項目很簡單 下面是Xcode一些常用的版本控制操作簡單列舉:  選擇對應的選項實現:     提交代碼到伺服器代碼倉庫(注釋)      如果你看到了這裡,或許你對版本控制已經基本上瞭解,但或許你也感覺有點蒙,但是沒關係,上面這麼多,實際開發中用到的十分之一不到,所以筆者為你準備了一片簡單的實戰:

iOS開發- 版本控制SVN和Git使用詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.