Что происходит за кулисами, когда я выполняю синхронизацию репо?
Что происходит за кулисами, когда я делаю repo sync в моем репозитории Android?
Это эквивалентно repo forall -c "git pull" или, может быть, git fetch? Или это делает что-то более сложное?
Спасибо
Ответ 1
Вот описание этой страницы того, что делает repo sync. В обычном случае он будет больше похож на git pull --rebase, чем git pull. Чтобы процитировать, что говорит эта страница:
Как работает синхронизация репо
Когда вы запускаете репо-синхронизацию, это происходит:
Если проект никогда не был синхронизирован, то синхронизация репо эквивалентна git clone. Все ветки в удаленном репозитории копируются в локальный каталог проекта.
Если проект уже синхронизирован один раз, то синхронизация репо эквивалентна:
git remote update
git rebase origin/branch
где ветка - это текущая ветвь в локальном каталоге проекта. Если локальный филиал не отслеживает ветку в удаленном репозитории, то для проекта не будет выполняться синхронизация.
Если операция reba 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.