版本管理
前面已經提到了,非常有必要對開發的代碼進行管理。那麼進行版本管理到底什麼時候使用呢?
我總結了使用版本管理的主要場景,有以下3種:
對於個人開發者,版本管理能記錄開發的變遷。它記錄了所有文檔的修改記錄,就好比玩遊戲時,我們都會時刻存檔,就怕哪一次不小心,控制的角色掛了;假如不存檔,出了問題,必須得從新開始。
如果使用了版本管理,就可以隨時保存文檔修改的進度。一旦文檔任何時候出現了問題,或者希望快速還原到之前某個特定的狀態,都可以很容易的切換過去。省去了程序員不少麻煩,畢竟誰也記不清哪年哪月哪日我添加了一段什麼代碼,目的是什麼,而正是這段代碼引起了bug,搞得我現在大腦崩潰。
當多個程序員開發同一個項目的時候,版本管理工具能很好的協調彼此的工作,讓大家開發的代碼不會衝突、互相干擾,即使出現了問題,也能很快找到原因。
比如
程序員A
在他的開發代碼中修改了work.java
中第15行的內容,同時程序員B
在他的開發代碼中修改了work.java
中第20行的內容。兩人把修改提交保存的時候,版本管理工具,會把兩人的修改合併起來。如果
程序員A
在他的開發代碼中修改了work.java
中第15行的內容,同時程序員B
在他的開發代碼中也修改了work.java
中第15行的內容。兩人把修改的內容提交保存的時候,版本管理工具,會發現兩人的修改衝突,告訴A
和B
,讓他們兩協商解決問題。文檔的修改積累到一定程度,比如說完成了設計的所有內容,就可以設置一個大的節點。後繼的開發可以分成兩支:一支繼續添加新的功能;一支修復現有程序的bug。
管理的工具
爲了滿足前面提到使用場景,在軟件開發的不同歷史階段,出現了不同的版本管理工具:從CVS
,到SVN
,再到現在使用最廣泛的Git
。
早期的版本控制軟件存在的各種缺點,都被後來的代替者解決了。在安卓的開發中,基本上都在使用Git
作爲版本控制工具。
Git
是Linux
之父Linus Torvalds親自開發的工具,有着高效的管理能力。它最爲基本的運作思路大致如下:
倉庫
Repository
是一個Git項目
的容器,裏面存放着文檔(包括代碼)、以及各個文檔的歷史修改信息;倉庫
Repository
可以存在於網絡端,也可以存在於本地電腦當中;倉庫有兩種獲取的方式,一個是clone網絡端已有的;一個是在本地電腦上自行創建,再通過網絡提供給別人訪問;
假如對本地的倉庫內容進行了修改,要保存修改進度的時候,
- 要先將這些修改放到stage當中,
- 然後提交-
commit
到本地的倉庫中,此時會產生一個全局唯一識別碼-Commit ID
,就像f27af79
; - 將
commit
後的內容推送push
到網絡端,而這個Commit ID
就代表你這次提交的唯一標記; - 假如推送的時候,自己修改的代碼和倉庫中的代碼出現了衝突
Conflit
(因爲修改了同一處的代碼導致),那麼推送者就需要查看代碼、找到修改這段代碼的提交者商量修改方案,解決衝突;
其他開發者假如clone了這個倉庫,就能看到
Commit
後的各種修改,並通過拉取pull
的操作從網絡端把更新同步到自己本地的代碼當中;假如同步代碼的過程中,自己的代碼和別人的修改發生了衝突
Conflit
,那麼拉取者就需要查看代碼、找到修改這段代碼的提交者商量修改方案,解決衝突;
除此之外,Git還擁有軟件工程方面的實用技巧,例如創建開發分支Branch
,給代碼打標籤Tag
。
更加詳細的內容,可以參考這裏。裏面還列舉出了各個平臺下可以選擇的圖形化工具。
Github的使用
Github幾乎是全世界程序員都知道的項目託管平臺,我們可以把代碼放在這個平臺上。整個項目的託管就是基於Git
的原理實現的。
Github在Git
管理中充當着網絡端的功能,扮演中心服務器的角色,讓我們可以隨時更新代碼、提交代碼,分享代碼。
而Android Studio
具有對Github平臺的原生支持,讓我們在開發的時候能夠無縫的加入對軟件版本控制的管理功能。
Github的註冊
打開Github的官網,按照指示很容易的註冊一個賬號。
登陸賬號後,可以看到你現在具有的倉庫-Repository
,
我之前已經創建過幾個免費倉庫了,所以列表裏會將它們呈現出來。如果是新註冊的賬號,這裏應該是空的。
Android Studio的配置
現在我們來把之前創建的天氣預報
工程,託管到Github上:
- 啓動
工具欄
的VCS -> Import into Version Control -> Share Project on Github
; - 在彈出的窗口中,根據提示輸入Github上的賬戶名和密碼;
- 輸入項目的名稱
WeatherApp
和項目描述,選擇Share
;
- 確認要添加到管理中的文件(代碼、配置、資源等文件),並給這次提交添加描述信息;
刷新Github上的個人主頁,可以看到新添加的項目倉庫WeatherApp
已經出現在那裏了,
此時看看Android Studio
的Version Control窗口
,就能看到當前的代碼管理情況,
Android Studio的Git管理
提交與推送入庫
Git版本管理有很多用法,這裏我們先介紹兩個最常使用的功能commit
與push
。
假如我們修改了WeatherApp
的MainActivity.java
,
LocalChanges選項卡
會將當前發生了變化的、被版本管理記錄的文件列出來,
點擊提交commit
按鈕,會將修改過的文件放入stage狀態,
並展示當前要提交commit
文件的狀態,讓我們再次確認。當我們點擊被修改過的文檔時,Android Studio
會爲我們展示當前修改後的文檔與修改前的文檔有哪些異同。讓我們在最後提交之前,再次檢查確認一次,
檢查無誤後,選擇提交併推送入庫-Commit and Push
,
假如沒有衝突發生,就能看到提交成功,版本控制增加新的節點,
Github上項目對應的代碼頁,也會更新,
其他
Android Studio
還提供了創建分支Branch
、創建標籤Tag
、以及在不同節點上來回切換的功能,這裏就不詳細描述了。
因爲這些內容如果沒有實際的例子,講起來會很枯燥。我會在開發的過程中根據需要穿插進響應的內容,這樣大家理解起來就會非常的方便了。
本文是《從設計到實現-手把手教你做android應用開發》系列文檔中的一篇。感謝您的閱讀和反饋,對本文有任何的意見和建議請留言,我都會盡量一一回復。
如果您覺得本文對你有幫助,請推薦給更多的朋友;或者加入我們的QQ羣348702074和更多的小夥伴一起討論;也希望大家能給我出出主意,讓這些文檔能講的更好,能最大化的幫助到希望學習開發的夥伴們。
除了CSDN發佈的文章,本系列最新的文章將會首先發布到我的專屬博客book.anddle.com。大家可以去那裏先睹爲快。
同時也歡迎您光顧我們在淘寶的網店安豆的雜貨鋪。店中的積木可以搭配成智能LED燈,相關的配套文檔也可以在這裏看到。
這些相關硬件都由我們爲您把關購買,爲大家節省選擇的精力與時間。同時也感謝大家對我們這些碼農的支持。
最後再次感謝各位讀者對安豆
的支持,謝謝:)