查看 repo help sync 命令的帮助说明,该命令的格式如下:
- Usage: repo sync [<project>...]
可以看到,它没有提供参数来指定要同步的远端服务器分支。那么在执行 repo sync 时,它同步的是远端服务器的哪个分支?
实际上,repo sync
默认同步在 repo init
时由 -b 选项指定的分支,这也是 repo 所跟踪的分支。
注意:如果本地的 git 仓库切换过分支,当前分支名和 repo init -b
指定的分支名不一样,那么执行 repo sync 会改变本地分支指向,需要注意到这个分支的变化,避免后续操作错分支。
下面具体举例说明 repo sync
后本地分支的变化,在这个例子一开始,本地当前分支名是 branch_m,这不是 repo init -b
所指定的分支。
1.使用 git branch 命令,打印出当前分支名是 branch_m:
$ 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 命令,会看到当前处于没有命名的分支下:
$ git branch
* (detached from f15a7be)
other_branch_xxx
branch_m
基于这个现象,建议在本地所有分支都关联到远端服务器分支时,才用 repo sync
来同步代码。
如果本地当前分支没有关联到远端服务器分支,使用 repo sync
同步之后,分支指向会发生变化,后续修改代码,并不是位于原来分支下面,如果要提交修改到原来的分支,会提示需要 merge,容易造成代码冲突,比较麻烦。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。