Разница между началом репо и git checkout -b

Работаю в ядре Android. Я очень знаком с git, но не очень знаком с репо, поэтому я прочитал следующий документ: http://source.android.com/source/version-control.html. Насколько я понимаю из этого, а также экспериментировать вокруг с ветками темы, repo start BRANCH_NAME такой же как git checkout -b BRANCH_NAME, Я прав в своем понимании, или есть некоторые тонкие, важные детали, которые я упускаю?

2 ответа

Решение

Глядя на start.py Исходный код для запуска репо, я считаю, что основное отличие заключается в управлении файлами манифеста, которые включены в проекты Android.

начинается новая ветка разработки, начиная с ревизии, указанной в манифесте.


Чтобы добавить ответ Trevor Johns, вам нужно проверить " Как сделать так, чтобы существующая ветка Git отслеживала удаленную ветку?" (Когда вы не используете repo start):

git checkout -b newBranch -t aosp/master

Это будет установить удаленный и слить (-t = "track") в конфиге, связанном с новой веткой.

Просто git checkout -b не будет ничего устанавливать и создавать чисто локальную ветвь (без отслеживания восходящей ветки до удаленного репо)

Разница в том, что repo start устанавливает remote а также merge Свойства вашей ветки внутри.git / config:

[branch "YOUR_BRANCH_HERE"]
    remote = aosp
    merge = master

Без них репо не будет знать, как правильно загрузить ваши изменения при запуске repo upload позже, и это будет действовать так, как будто ваша новая ветвь просто не существует.

(Там также есть некоторая логика, которая позволяет вам создавать новую ветку для каждого проекта в репо одновременно с --all, но это просто удобство.)

Другие вопросы по тегам