使用 Android 程式碼需要使用
Git
(一種開源版本控制系統)和
Repo
(一種在 Git 之上運行的 Google 建置的儲存庫管理工具)。請參閱
原始碼管理工具,
以了解 Repo 和 Git 之間關係的說明以及每個工具的支援文件的連結。
流動
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
建立主題分支
每當?開始變更時(例如當?開始處理錯誤或新功能時),請在本機工作環境中?動主題分支。主題分支
不是
原始文件的副本;而是原始文件的副本。?是指向特定提交的指針,這使得創建本地分支?在?們之間切換成?輕量級操作。透過使用分支,?可以將工作的某一方面與其他方面隔離。有關使用主題分支的有趣文章,請參閱
分離主題分支
。
若要使用 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 會注意到但不會追??在專案中所做的更改。要告訴 Git 保留?的更改,?必須標記或
暫存
這些更改以包含在提交中。
階段更改:
git add
此指令接受專案目錄中的?案或目錄的參數。?管名稱如此,但
git add
?不是將?案新增至 Git 儲存庫;?還可以將?案新增至 Git 儲存庫。?也可用於暫存?案修改和刪除。
?看客戶狀態
列出文件的狀態:
repo status
若要?看未提交的編輯(
未
標記?提交的本機編輯):
repo diff
若要?看提交的編輯(位於
標記
?提交的編輯),請確保?位於專案目錄中,然後使用
cached
參數執行
git diff
:
cd
~/WORKING_DIRECTORY/PROJECT
git diff --cached
提交變更
提交
是 Git 中修訂控制的基本單位,由整個專案的目錄結構和文件內容的快照組成。使用以下命令在 Git 中建立提交:
git commit
當提示輸入提交訊息時,請?提交到 AOSP 的變更提供簡短(但有用)的訊息。如果不新增提交訊息,則提交失敗。
將更改上傳到 Gerrit
更新到最新版本,然後上傳變更:
repo sync
repo upload
這些命令會傳回?已提交的變更列表,?提示?選擇要上傳到審閱伺服器的分支。如果只有一個分支,?會看到一個簡單的
y/n
提示。
解決同步衝突
如果
repo sync
指令返回同步衝突:
- ?看未合?的?案(狀態代碼 = U)。
- 根據需要編輯衝突區域。
- 切換到相關的項目目錄。新增?提交受影響的文件,然後重新調整更改的基礎:
git add .
git commit
git rebase --continue
- 變基完成後,再次開始整個同步:
repo sync
PROJECT0 PROJECT1 ... PROJECTN
?理客戶
將變更合?到 Gerrit 後,更新本機工作目錄,然後使用
repo prune
安全刪除過時的主題分支:
repo sync
repo prune
刪除客戶
由於所有狀態資訊都儲存在?的用戶端中,因此?只需從?案系統中刪除該目錄?可:
rm -rf
WORKING_DIRECTORY
刪除用戶端
會永久刪除
??未上傳以供審核的所有變更。