在我的Android资源库中执行repo sync
后,幕后会发生什么?
它等同于repo forall -c "git pull"
还是git fetch?或者它做了一些更复杂的事情?
由于
答案 0 :(得分:15)
repo sync
对git pull --rebase
的描述有this page的说明。在通常情况下,它更像git pull
而不是git remote update
git rebase origin/branch
。引用该页面所说的内容:
Repo同步如何工作
当您运行repo sync时,会发生以下情况:
如果项目从未同步过,则repo sync等同于git clone。远程存储库中的所有分支都将复制到本地项目目录。
- 醇>
如果项目已经同步一次,那么repo sync相当于:
git rebase --continue
其中branch是本地项目目录中当前已签出的分支。如果本地分支未跟踪远程存储库中的分支,则不会对项目进行同步。
如果git rebase操作导致合并冲突,则需要使用普通的Git命令(例如
.repo/
)来解决冲突。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}}。