有時候在開發過程中我們經常會遇到這樣的問題,即本來編譯運作都OK的程式,不知道修改了那個配置,突然變得無法編譯,或者運作時出現了各種各樣的bug。此時的辦法隻能是硬着頭皮去一個個地修改,或者幹脆全部推倒重來。這種方式面臨着很嚴重的問題,即使項目很小,也會耗費掉我們的很大精力,如果項目規模龐大,那我們就徹底不知所措了。是以,在代碼中實行版本控制還是非常重要的。我們常用到的版本控制工具有SVN和GIT用戶端等,這兩者在開發iOS應用時依然可以發揮強大的作用,然而如果隻是一個我們自己開發的工程則顯得有些過于複雜,其實iOS的IDE已經內建了一個簡易的Git,可以很友善地供我們實作本地代碼版本控制。
其實給工程建立版本控制非常簡單,隻需要在建立工程的時候在圖示位置勾選就可以了。

菜單中選擇“Source Control”可以看到,Xcode提供的版本控制工具其實已經比較強大了,支援分支的建立、合并等操作。不過對于我們來說第一步還是成功實作版本的修訂記錄這項最基本的功能,更多更強大的功能在未來會慢慢接觸。
工程建立完成後,選擇“Source Control”->“History”可以檢視版本修訂的曆史,由于現在我們剛剛建立好工程,“Project history”視窗中隻有一個Initial Commit,表示我們第一次向伺服器(其實就是本機)送出代碼。
下面我們向工程中添加一些内容,比如一個按鈕和标簽并添加幾個函數。
完成後我們發現,我們所修改的storyboard和ViewController.m檔案後面出現了一個“M”符号,表示這兩個檔案被修改過(Modified)但是修改尚未送出。此時選擇“Source Control”->“Commit”,将會出現送出視窗,在這個視窗裡我們可以檢查做了哪些修改,決定選擇性地送出哪些修改。
PS:對于代碼檔案,Commit視窗顯示得可謂一目了然,但是對于storyboard會以XML檔案的方式顯示修改,這就不那麼直覺了。
檢查無誤後,可以選擇“Commit 2 Files”來送出修改,記得在下面的"Enter commit message here"寫上對本次修改的說明。完成後在檢查“History”,就可以看到我們所做的送出了。
左上角的第三個按鈕可以打開版本編輯器,之後界面就會用兩欄顯示各個檔案在不同版本中的修訂。在代碼出現問題的時候,可以按照這樣的修訂提示逐條地review,在出現問題需要回退的地方可以直接在修訂處選擇“Discard Change”來恢複到以前的版本。
總結:對于個人開發者來說,Xcode自帶的版本控制工具基本上已經可以滿足我們的需求,隻是唯一感覺有點不足的地方是好像缺乏了将整個工程全部回退到某個記錄點的功能,這個功能在git用戶端中是很容易實作的。另外對于團隊開發者來說還可能涉及到代碼伺服器管理、分支的建立和管理等操作,此為後話。