查看 repo help sync 命令的帮助说明,该命令的格式以下:git
能够看到,它没有提供参数来指定要同步的远端服务器分支。那么在执行 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