如要處理 Android 程式碼,您需要使用開放原始碼版本控管系統 Git,以及 Google 建構的存放區管理工具 Repo (此工具會在 Git 上執行)。如要瞭解 Repo 和 Git 之間的關係,以及各項工具的支援說明文件連結,請參閱「原始碼控管工具」。
Flow
Android 開發的基本工作流程如下:
- 使用
repo start開始新的主題分支。 - 編輯檔案。
- 使用
git add變更階段。 - 使用
git commit修訂變更。 - 使用
repo upload將變更上傳至審查伺服器。
工作
在 Android 程式碼存放區中使用 Git 和 Repo 時,需要執行下列常見工作。
| 指令 | 說明 |
|---|---|
repo init |
初始化新用戶端。 |
repo sync |
將用戶端同步處理至存放區。 |
repo start |
開始新的分支。 |
repo status |
顯示目前分支的狀態。 |
repo upload |
將變更上傳至審查伺服器。 |
git add |
暫存檔案。 |
git commit |
提交暫存的檔案。 |
git branch |
顯示目前的分支版本。 |
git branch [branch] |
建立新的主題分支。 |
git checkout [branch] |
將 HEAD 切換至指定分支。 |
git merge [branch] |
將 [branch] 合併至目前分支。 |
git diff |
顯示未暫存變更的差異。 |
git diff --cached |
顯示暫存變更的差異。 |
git log |
顯示目前分支的記錄。 |
git log m/[codeline].. |
顯示未推送的提交。 |
如要瞭解如何使用 Repo 下載來源,請參閱「下載來源」和「Repo 指令參考資料」。
同步處理用戶端
如要同步處理所有可用專案的檔案,請按照下列步驟操作:
repo sync
如要同步處理所選專案的檔案,請按照下列步驟操作:
repo sync PROJECT0 PROJECT1 ... PROJECTN
建立主題分支
每當您開始變更時 (例如開始處理錯誤或新功能),請在本機工作環境中啟動主題分支。主題分支並非原始檔案的副本,而是指向特定提交內容的指標,因此建立本機分支並在分支之間切換是輕量型作業。使用分支版本可將工作中的某個方面與其他方面區隔開來。如需有關使用主題分支的有趣文章,請參閱「Separating topic branches」(區隔主題分支)。
如要使用 Repo 啟動主題分支,請前往專案並執行下列指令:
repo start BRANCH_NAME .
尾端的句號 ( .) 代表目前工作目錄中的專案。
如要確認新分支是否已建立,請按照下列步驟操作:
repo status .
使用主題分支
如要將分支指派給特定專案,請按照下列步驟操作:
repo start BRANCH_NAME PROJECT_NAME
如需所有專案的清單,請參閱 android.googlesource.com。如果您已前往專案目錄,只要使用半形句號代表目前的專案即可。
如要在本機工作環境中切換至其他分支版本,請按照下列步驟操作:
git checkout BRANCH_NAME
如要查看現有分支清單:
git branch
或
repo branches
這兩個指令都會傳回現有分支的清單,且目前分支的名稱會加上星號 (*)。
git branch暫存檔案
根據預設,Git 會注意到您在專案中進行的變更,但不會追蹤這些變更。 如要讓 Git 保留變更,必須標記或暫存這些變更,以便納入提交。
如要暫存變更:
git add
這個指令會接受專案目錄中的檔案或目錄引數。雖然名稱是 git add,但 git add 不只會將檔案新增至 Git 存放區,也可以用來暫存檔案修改和刪除作業。
查看用戶端狀態
如要列出檔案狀態:
repo status
如要查看未提交的編輯內容 (未標示為提交的本機編輯內容):
repo diff
如要查看已提交的編輯內容 (標示為要提交的編輯內容),請確認您位於專案目錄中,然後執行 git
diff 並加上 cached 引數:
cd ~/WORKING_DIRECTORY/PROJECTgit diff --cached
修訂變更
提交是 Git 中修訂控制的基本單位,包含整個專案的目錄結構和檔案內容快照。使用下列指令在 Git 中建立提交:
git commit
系統提示輸入修訂訊息時,請提供簡短但實用的訊息,說明提交至 Android 開放原始碼計畫的變更。如果未新增修訂版本訊息,修訂版本就會失敗。
」。將變更上傳至 Gerrit
更新至最新修訂版本,然後上傳變更:
repo syncrepo upload
這些指令會傳回您已提交的變更清單,並提示您選取要上傳至審查伺服器的分支。如果只有一個分支,系統會顯示簡單的 y/n 提示。
解決同步衝突
如果 repo sync 指令傳回同步衝突:
- 查看未合併的檔案 (狀態碼 = U)。
- 視需要編輯衝突區域。
- 切換至相關專案目錄。新增並修訂受影響的檔案,然後重新設定變更基準:
git add .git commitgit rebase --continue - 完成重定基準後,請再次啟動整個同步程序:
repo sync PROJECT0 PROJECT1 ... PROJECTN
清除用戶端
將變更合併至 Gerrit 後,請更新本機工作目錄,然後使用 repo prune 安全地移除過時的主題分支:
repo syncrepo prune
刪除用戶端
由於所有狀態資訊都儲存在用戶端,您只需要從檔案系統中刪除目錄即可:
rm -rf WORKING_DIRECTORY
刪除用戶端會永久刪除所有尚未上傳送審的變更。