原始碼控管工作流程

如要處理 Android 程式碼,您需要使用開放原始碼版本控管系統 Git,以及 Google 建構的存放區管理工具 Repo (此工具會在 Git 上執行)。如要瞭解 Repo 和 Git 之間的關係,以及各項工具的支援說明文件連結,請參閱「原始碼控管工具」。

Flow

Android 開發的基本工作流程如下:

  1. 使用 repo start 開始新的主題分支。
  2. 編輯檔案。
  3. 使用 git add 變更階段。
  4. 使用 git commit 修訂變更。
  5. 使用 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/PROJECT
git diff --cached

修訂變更

提交是 Git 中修訂控制的基本單位,包含整個專案的目錄結構和檔案內容快照。使用下列指令在 Git 中建立提交:

git commit

系統提示輸入修訂訊息時,請提供簡短但實用的訊息,說明提交至 Android 開放原始碼計畫的變更。如果未新增修訂版本訊息,修訂版本就會失敗。

」。

將變更上傳至 Gerrit

更新至最新修訂版本,然後上傳變更:

repo sync
repo upload

這些指令會傳回您已提交的變更清單,並提示您選取要上傳至審查伺服器的分支。如果只有一個分支,系統會顯示簡單的 y/n 提示。

解決同步衝突

如果 repo sync 指令傳回同步衝突:

  1. 查看未合併的檔案 (狀態碼 = U)。
  2. 視需要編輯衝突區域。
  3. 切換至相關專案目錄。新增並修訂受影響的檔案,然後重新設定變更基準:
    git add .
    git commit
    git rebase --continue
    
  4. 完成重定基準後,請再次啟動整個同步程序:
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

清除用戶端

將變更合併至 Gerrit 後,請更新本機工作目錄,然後使用 repo prune 安全地移除過時的主題分支:

repo sync
repo prune

刪除用戶端

由於所有狀態資訊都儲存在用戶端,您只需要從檔案系統中刪除目錄即可:

rm -rf WORKING_DIRECTORY

刪除用戶端會永久刪除所有尚未上傳送審的變更。