VSC > Commit 是正式的將程式碼認可至指定的版本控制服務上,首先看上半部,這邊會顯示從上次認可到目前最新變動清單,新增加的檔案會以綠色標示,內容有修改的以藍色,刪除的檔案為灰色,尚未列入 (或選擇不列入) 版控的檔案會以紅色標示。Commit Message 則是讓你輸入每次認可的描述,為了避免未來的你搭乘時光機回來把自己痛打一頓,請維持良好的說明習慣,對於未來在查詢記錄時很有幫助。
右上角 Git 欄位可以輸入編輯者的名稱,或勾選 Sign-off 會自動帶入資訊,可以將滑鼠移至 Sign-off commit 這段文字標籤上,會有提示文字出現,上面顯示將自動加入的簽名文字,一個簽名以示負責的概念,系統初始預設是沒有勾選的。
Before Commit 則可以讓你選擇在認可前由程式自動幫你做某些工作,依序為:
1. 重新格式化
2. 重新排序
3. 移除冗餘的 import 行
4. 程式碼分析
5. 檢查認可中的 TODO 註解 (下一張圖片說明)
6. 自動依照程式碼分析建議清理
7. 更新版權所有資訊
字面上的意思都能明白用途,這邊不一一說明,前五項作者覺得可以勾選起來,第六及第七就讓大家自行決定了。
上面提到的檢查 TODO 指的是一種註解的特殊註記法,使用方式為 // TODO
,完全大寫,使用這樣的備註方式,為了提警自己或他人,這段程式尚未完成,還有待加入其它內容,在認可時系統會提醒尚未完成的 TODO (完成後,記得把 TODO 備註刪除)。
下半部則是 Git 上最新版與本機版本的差異,Diff 編輯器會自動將差異的部分標示出來,一般情況下若是在同一個檔案但不同程式段落增修程式碼時,並不會產生衝突,編輯器會自動判斷合併,當然合併的部分也會幫你標示出來,可以人工取消合併。但若其他人同時修改到相同部分而程式無法自動判斷時,就會發生衝突,這時就一定要由人工判斷抉擇,確定要保留的衝突版本後才能將變更認可。
在 Diff 視窗中,前五個按鈕分別是:
1. 移動至上一段差異
2. 移動至下一段差異
3. 移動至上一個檔案
4. 移動至下一個檔案
5. 在編輯器中開啟原始檔編輯,讓你可以快速的進行版本確認的動作
最後就可以按下 Commit 將本次變更認可到本機上,認可時也會進行剛剛選擇的檢查,如下所示。
作者這邊受限於設備因素沒辦法展示多人編輯衝突,各位可以參考:Git Merge Conflicts: Android Programming影片中有清楚的展示衝突畫面,和解決合併的方式。
不過本機上的版本控制是不夠的,在多人開發環境你會將變更推送到 Git Server 上,有關伺服器的架設資訊因為牽涉到主機作業系統的不同,有太多選擇,這邊就不多做介紹,重點關注在如何設定 Android Studio 將變更推送至遠端上。
首先在剛剛 Commit 按鈕右側有個下拉選項,點擊後會看到 Commit and Push (推送),選擇這個項目等待 Commit 至本機完成,或也可以在上方選單 > VCS > Git > Push (Ctrl + Shift + K),就會看到 Push Commits 操作視窗,如圖二。
首次使用會需要輸入遠端伺服器的連線資訊,Name 與 URL 可在版本控制伺服器的儲存庫管理中查看,或請教該系統管理員,定義好連線資訊後,出現認證畫面輸入帳號密碼 (或其他認證方式),輸入後就會自動記錄。日後想修改連線資訊可在 Menu > VSC > Git > Remotes 修改,若有新的成員加入,則可以使用 Git > Pull 從伺服器將專案下載到本機中展開工作。
Git > Show History 可以查看伺服器上的變更記錄,Compare with 可以比對本機與伺服器版本,Revert 則是將本機檔案復原成伺服器版本,其他還有很多進階操作如:Branches (分支)、Reset HEAD (重置)、Clone (建立複本)、Fetch (遠端分支),這些版控精隨可在資料參考第二點:如何使用版本控制系統-進階篇,附上一個清楚的教學網站,內容有許多圖解方便你理解抽象的概念。
今天的課程就到這邊,明天會開始進入介紹 Android 開發版面配置的一些操作方法,我們明天見!
資料參考
Git Merge Conflicts: Android Programming
https://www.youtube.com/watch?v=RxunYSzMNKM如何使用版本控制系統-進階篇
https://backlog.com/git-tutorial/tw/stepup/stepup1_1.htmlKotlin 官方程式語言手冊
https://kotlinlang.org/docs/reference/