介绍repo sync同步Android源码会拉取远端服务器的哪一个分支

查看 repo help sync 命令的帮助说明,该命令的格式以下:git

  • Usage: repo sync [<project>...]

能够看到,它没有提供参数来指定要同步的远端服务器分支。那么在执行 repo sync 时,它同步的是远端服务器的哪一个分支?bash

实际上,repo sync 默认同步在 repo init 时由 -b 选项指定的分支,这也是 repo 所跟踪的分支。服务器

注意:若是本地的 git 仓库切换过度支,当前分支名和 repo init -b 指定的分支名不同,那么执行 repo sync 会改变本地分支指向,须要注意到这个分支的变化,避免后续操做错分支。app

下面具体举例说明 repo sync 后本地分支的变化,在这个例子一开始,本地当前分支名是 branch_m,这不是 repo init -b 所指定的分支。code

1.使用 git branch 命令,打印出当前分支名是 branch_m:orm

$ git branch
  other_branch_xxx
* branch_m

2.在当前代码目录下执行 repo sync 命令:同步

$ repo sync .
Fetching project platform/packages/apps/Settings
packages/apps/Settings/: leaving branch_m; does not track upstream

3.再次执行 git branch 命令,会看到当前处于没有命名的分支下:it

$ git branch
* (detached from f15a7be)
  other_branch_xxx
  branch_m

基于这个现象,建议在本地全部分支都关联到远端服务器分支时,才用 repo sync 来同步代码。form

若是本地当前分支没有关联到远端服务器分支,使用 repo sync 同步以后,分支指向会发生变化,后续修改代码,并非位于原来分支下面,若是要提交修改到原来的分支,会提示须要 merge,容易形成代码冲突,比较麻烦。class

相关文章
相关标签/搜索