Разница между началом репо и 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
, но это просто удобство.)