Android Studio 與 Git (part 1)

終究要用 Git,為何不現在就開始用!?

傑夫老師最近在開發 Android 專案,要做的功能又多又細,有時候某些功能會需要砍掉重練,但各個功能已經盤根錯節,要重做之前做好的功能卻已不知如何下手了,真希望時間能倒流,回到剛開始的時候。這時候版本管理(Version Control)就很重要了,正好 Android Studio 中集成了目前最流行的 Git 功能,不論是否有要把程式放到雲端(GitHub),Git 會是一定要學的工具。

Step 1: 建立倉庫、首次提交

那我們就開始吧~建立好一個新專案後,做好了第一個功能,這裡的範例是把新建專案時自動產生的TextView id 設為 "textView1"、text 設為 "Feature 1"。這時就可以開始進行版本管理了,請點選下方 Version Control,再點選 Create Git repository (建立 Git 倉庫):

此時彈出選擇目錄的視窗,按下OK後,便會看到以下畫面:下方 Version Control 變為了 Git,左方多了 Commit。

點選左方 Commit,點開 Unversioned Files 便會看到未加入版本管理的檔案,此時就是 Android 專案中所有的檔案。

Unversioned Files 打勾,並在右邊中間提交信息區打上 "功能 1",接著就可以按下 Commit 進行首次的提交:

如果有 Warning (警告) 可以點開來看看,有時候是一些有用的信息,可以依其建議修改。如果不想管就按下 Commit Anyway;如果有修改,修改後再次按下 Commit。

按下 Commit Anyway 之後再回到下方 Git,就會看到如此畫面。中間下方區塊顯示的就是提交的紀錄,目前有了一筆"功能 1",點擊"功能1"後,右下方出現該次提交的檔案與提交信息。這邊之後再回來介紹,先繼續開發下去。

Step 2: 功能開發,第二次提交

接著開發功能2,多加一個 textView2,text 設為 "Feature 2",注意這裡 layout_constraintTop_toBottomOf 設的是 "textView1",而 textView1 的 layout_constraintBottom_toTopOf 改為了 "textView2"。

功能2開發好了,再來點擊左邊 Commit,此時看到的是 Changes,Changes 下面顯示的是上次提交後有所改變的檔案。點擊 (double click) activity_mail.xml 右邊出現的是這個檔案與上次提交內容的 diff (差異),左邊檔案是上次提交的、右邊檔案 (Your version) 是剛剛開發的的。

勾選 Changes 並填寫提交信息 "功能 2",再按下 Commit 做第二次提交。一樣出現警告可以按 Commit Anyway 忽略警告進行提交。

勾選 Changes 並填寫提交信息 "功能 2",再按下 Commit 做第二次提交。一樣出現警告可以按 Commit Anyway 忽略警告進行提交。

此時中間就多了一筆提交記錄 "功能 2",點擊後右下方顯示此次提交的檔案。點擊 (double click) 在 activity_main.xml 上又會出現這個檔案提交前後的 diff。因為跟上面一樣,就不截圖了,但以後要回頭找這次提交改了哪些地方,就是到此處來一一查看每個檔案。

Step 3: 繼續開發,後續提交

接下來開發功能3,多加一個 textView3,text 設為 "Feature 3",這裡也是把 layout_constraintTop_toBottomOf 設 "textView2",而 textView2 的 layout_constraintBottom_toTopOf 改為了 "textView3"。

接著一樣點擊左邊 Commit,點擊 (double click) activity_mail.xml 到右邊查看這個檔案與上次提交內容的 diff (差異),如果沒問題,勾選 Changes 並填寫提交信息 "功能 3",再按下 Commit 做第三次提交。一樣出現警告可以按 Commit Anyway 忽略警告進行提交。

提交完成後,就看到多一筆紀錄 "功能 3"。就這樣,開發過程就這樣一步一腳印的記錄下來了。

Q & A:

問題一:一個人開發何必需要版本管理?

版本管理不一定要多人開發時才用的到,一個人的專案也會需要,例如:開發到一半的程式要先交出去需要做個記錄;完成的程式發現有bug要快速定位到之前功能開發時修改的地方,這些狀況有版本管理都很方便。

問題小專案幹嘛要大費周章做版本管理?

如果專案不複雜、功能簡單,當然不必;但如果功能複雜,每個功能都要涉及很多檔案,甚至細化成許多小步驟,如果不做管理,難保記不得當時這功能改動到哪些程式,有工具幫你管不是很好嗎?總不能每次都把專案存一個副本吧!

問題:版本管理就這樣一步一腳印的紀錄嗎?

版本管理還有分支、合併的功能,也就是說可以走到一條"岔路"試試看,如果這條岔路走的不錯,再把這條岔路上的紀錄合併到主要道路上;如果這條岔路走不通,那可以很快的回到分岔點,繼續走主要道路。
聽來很玄吧!?就期待
下一篇來說明。 Bye now~