如需使用 Android 代码,您需要使用 Git(一种开源版本控制系统)和 Repo(一种对 Git 构成补充的 Google 代码库管理工具)。请参阅源代码控制工具,了解有关 Repo 和 Git 之间关系的说明,以及指向每个工具的支持文档的链接。
流程
Android 开发涉及以下基本工作流程:
- 使用
repo start
新建一个主题分支。 - 修改文件。
- 使用
git add
暂存更改。 - 使用
git commit
提交更改。 - 使用
repo upload
将更改上传到审核服务器。
Tasks
在 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 |
显示未暂存更改的 diff 结果。 |
git diff --cached |
显示已暂存更改的 diff 结果。 |
git log |
显示当前分支的历史记录。 |
git log m/[codeline].. |
显示未推送的提交。 |
如需了解如何使用 Repo 下载源代码,请参阅下载源代码和 Repo 命令参考文档。
同步客户端
如需同步所有可用项目的文件,请运行以下命令:
repo sync
如需同步所选项目的文件,请运行以下命令:
repo sync PROJECT0 PROJECT1 ... PROJECTN
创建主题分支
当您开始进行更改(例如当您开始处理 bug 或实现新功能)时,请在本地工作环境中新建一个主题分支。主题分支不是原始文件的副本;它一个指针,指向某一项提交内容,可以简化创建本地分支以及在本地分支之间进行切换的操作。通过使用分支,您可以将工作的某个方面与其他方面分隔开来。请参阅分隔主题分支(一篇有关使用主题分支的有趣文章)。
如需使用 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 中,提交是修订版本控制的基本单位,包含目录结构的快照以及整个项目的文件内容。commit您可以使用以下命令在 Git 中创建提交:
git commit
当系统提示您输入提交消息时,请针对要提交至 AOSP 的更改提供一条简短(但有帮助)的消息。如果您不添加提交消息,提交将会失败。
将更改上传到 Gerrit
请更新至最新版本,然后上传相应更改:
repo sync
repo upload
运行这些命令后,系统会随即列出您已提交的更改,并提示您选择要上传到审核服务器的分支。如果只有一个分支,您会看到一个简单的 y/n
提示符。
解决同步冲突
如果 repo sync
命令返回同步冲突,请执行以下操作:
- 查看未合并的文件(状态代码 = U)。
- 根据需要修改存在冲突的地方。
- 对相关项目目录进行更改。添加并提交受影响的文件,然后对这些更改执行“衍合”(rebase) 命令:
git add .
git commit
git rebase --continue
- 当衍合完成后,再一次开始整个同步过程:
repo sync PROJECT0 PROJECT1 ... PROJECTN
清理客户端
将更改合并到 Gerrit 之后,请更新您的本地工作目录,然后使用 repo prune
来安全移除已过时的主题分支:
repo sync
repo prune
删除客户端
由于所有状态信息都会存储在客户端中,您只需从文件系统中删除相应目录即可:
rm -rf WORKING_DIRECTORY
删除客户端将永久删除您尚未上传以供审核的所有更改。