查看 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