当我进行回购同步时,幕后会发生什么?

时间:2011-02-23 07:36:53

标签: android git repository

在我的Android资源库中执行repo sync后,幕后会发生什么?

它等同于repo forall -c "git pull"还是git fetch?或者它做了一些更复杂的事情?

由于

1 个答案:

答案 0 :(得分:15)

repo syncgit pull --rebase的描述有this page的说明。在通常情况下,它更像git pull而不是git remote update git rebase origin/branch 。引用该页面所说的内容:

  

Repo同步如何工作

     

当您运行repo sync时,会发生以下情况:

     
      
  1. 如果项目从未同步过,则repo sync等同于git clone。远程存储库中的所有分支都将复制到本地项目目录。

  2.   
  3. 如果项目已经同步一次,那么repo sync相当于:

    git rebase --continue
         

    其中branch是本地项目目录中当前已签出的分支。如果本地分支未跟踪远程存储库中的分支,则不会对项目进行同步。

         

    如果git rebase操作导致合并冲突,则需要使用普通的Git命令(例如.repo/)来解决冲突。

  4.         

    repo sync命令还会更新git remote update目录中的私有存储库。

基本上origin/branch通过运行git fetch origin确保您的远程跟踪分支(包括git remote update)是最新的。 (事实上,git fetch [remotename]的行为比这更复杂,depends on your git config,但在典型的设置中,它会为每个遥控器运行git rebase origin/branch 。) 然后branch重写您origin/branch上的所有提交,将您上游不存在的提交重播到{{1}}。