使用 Android 代码需要使用 Git(一个开源版本控制系统)和 Repo(一个 Google 构建的、运行在 Git 之上的代码库管理工具)。 有关 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 [分支] |
创建新的主题分支。 |
git checkout [分支] |
将 HEAD 切换到指定的分支。 |
git merge [分支] |
将 [分支] 合并到当前分支中。 |
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 代码库;它还可以用于暂存文件修改和删除。
查看客户端状态
要列出文件状态
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
删除客户端会永久删除您尚未上传以供审核的任何更改。