標籤:
公司的實際開發中,在天朝使用較多的還是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版本號碼 //查看回退版本正式:
-
- svn update
- svn merge -r 版本號碼(現):版本號碼(前) name
- svn ci -m “注釋"
svn remove name簡:rm
-
- svn updata //先更新所有資料
- svn log //列印所有版本
二:衝突解決-------- out of data——
(手動解決衝突: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需要注意的幾個地方:
找到“Log”選項,選擇並點擊。
查看自己當前的版本是否是最新的,如果不是最新的版本,從第2步開始執行;
如果自己當前的版本是最新的,從第3步開始執行;
當前程式員在開啟工程項目之前,找到“Update to Latest Revision”選項,選擇並點擊。
目的:保持當前程式員用戶端的項目版本是最新的。
-
- 3.編輯項目
- 4.提交之前,再次點擊“Update to Latest Revision”,保持項目是最新版本。
- 5.更新最新版本後,如果有錯誤,衝突等情況,解決,直到沒錯誤!
- 6.提交項目,找到“Commit Changes”選項,選擇並點擊。
目的:把當前編輯後的項目提交的伺服器。
當我們正在編輯某個檔案時,為了防止被其他人修改,可以在編輯之前,使該檔案處於鎖定狀態,當我們編輯後,要提交的時候,再解鎖。
-
- 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:完整下載
一.命令?行的演練 1.初始化?一個代碼倉庫
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.初始化項??目
- touch main.m : 建立了main.m
- git add main.m : 將新添加的?檔案或者修改的?檔案添加到暫存區
- git commit -m “初始化項??目”
- 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位)
二.團隊開發—共用版本庫
- 真實的GIT伺服器的搭建,是?非常繁瑣的事情(Linux)
- 一個?檔案夾
- 優盤
- 將代碼託管到別?人的伺服器(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使用詳解