Что происходит за кулисами, когда я выполняю синхронизацию репо?

Что происходит за кулисами при repo sync в моем репозитории Android?

Это эквивалентно repo forall -c "git pull" или, может быть, git fetch? Или это делает что-то более сложное?

благодаря

Solutions Collecting From Web of "Что происходит за кулисами, когда я выполняю синхронизацию репо?"

На этой странице есть описание того, что делает repo sync . В обычном случае это будет больше похоже на git pull --rebase чем git pull . Чтобы процитировать, что говорит эта страница:

Как работает синхронизация репо

Когда вы запускаете синхронизацию репо, это то, что происходит:

  1. Если проект никогда не был синхронизирован, синхронизация репо эквивалентна git-клону. Все ветви в удаленном репозитории копируются в локальный каталог проекта.

  2. Если проект уже синхронизирован один раз, то синхронизация репо эквивалентна:

     git remote update git rebase origin/branch 

    Где ветка – это текущая ветвь в локальном каталоге проекта. Если локальный ветвь не отслеживает ветвь в удаленном репозитории, синхронизация не будет выполняться для проекта.

    Если операция перебора git приводит к конфликтам слиянием, вам нужно будет использовать обычные команды Git (например, git rebase --continue ) для разрешения конфликтов.

Команда repo sync также обновляет частные репозитории в .repo/ .

По сути, git remote update гарантирует, что ваши ветви удаленного отслеживания (включая origin/branch ) обновлены, запуская git fetch origin . (На самом деле поведение git remote update более сложное и зависит от вашей конфигурации git , но в типичной настройке он будет запускать git fetch [remotename] для каждого из ваших пультов.) Затем git rebase origin/branch перезаписывает вашу branch , переигрывая все ваши коммиты, которые не присутствуют вверх по origin/branch .