Что происходит за кулисами, когда я делаю синхронизацию репо? - PullRequest
12 голосов
/ 23 февраля 2011

Что происходит за кулисами, когда я делаю repo sync в моем хранилище Android?

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

Спасибо

1 Ответ

15 голосов
/ 23 февраля 2011

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

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

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

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

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

    git remote update
    git rebase origin/branch
    

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

    Если операция git rebase приводит к конфликтам слияния, вам нужно использовать обычные команды 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...