介紹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

相關文章
相關標籤/搜索