Intereting Posts
Эллипсис TextView не работает с maxLines = 1 Невозможно надуть панель инструментов на устройствах pre L Проблема с нарушениями политики показана для библиотеки или SDK (com.google.ads, com.google.android.gms.internal) Отправка данных из Activity в WearableListenerService Как определить версию SDK для Android, установленную на компьютере? Создание SearchView, который выглядит как руководство по разработке материалов Как слить клиентское приложение OpenVPN с другим приложением Android? Как получить доступ к пользовательскому интерфейсу активности из моего класса? Как вызвать активность на основе активности Java? Светящийся текст на кнопке с прозрачным фоном в макете с другим фоном Сетевые тайм-ауты в Android Повторная инициализация ткани Twitter после долгого приложения для Android в режиме бездействия Как подключить Kindle Fire HDX для отладки через USB с ADB Android AlertDialog Builder Что лучше между AlarmManager и Handler + WakeLock?

Как git push работает с инструментом репо с Android?

Я привык использовать git с одним хранилищем. Тем не менее, я в последнее время занимался разработкой Android и пытаюсь обернуть голову вокруг repo . Я создал некоторые пользовательские репозитории git, создав xmls в .repo/local_manifests (я использую repo 1.19), и repo sync работает нормально.

Когда я смотрю на пользовательские репозитории git, они говорят: # Not currently on any branch. Это похоже на то, когда я использую команду git checkout abcd1234 (чтобы проверить фиксацию abcd1234), а не git checkout origin/master . Что касается внесения изменений, я не уверен, как вернуться к происхождению. Вот мой обычный рабочий процесс git.

 git checkout origin/master #make changes to working directory git add . git commit -m 'useful message' #assume time has passed and there could be changes upstream git fetch git rebase origin/master git push origin master 

Теперь, когда я больше не являюсь технически на ветке, как я могу продвигать изменения? Я знаю, что есть утилита repo upload но я точно не знаю, как это работает. Я никогда не использовал Gerrit, но, возможно, стоит настроить так, чтобы другие члены команды могли просмотреть код, прежде чем он попадет в Github. Честно говоря, у меня все еще есть очень абстрактное понимание repo и Gerrit .

Технически, если вы это сделаете

 git checkout origin/master 

Вы сразу попадаете в отдельное состояние HEAD.

К лучшему или худшему, это именно то, что по умолчанию выполняет repo sync , так что каждый из ваших репозиториев, перечисленных в манифесте, находится в состоянии автономного состояния после новой repo sync .

Отдельный HEAD – это совершенно нормальное состояние для repo – если начало / мастер перемещается вперед, repo sync также перемещает ваше локальное состояние (в действительности это делает git checkout origin/master снова).

Однако это странное состояние не очень хорошо, если вы хотите внести свои изменения и подтолкнуть их вверх по течению. В этом случае вы можете выполнить одно из следующих действий:

 repo start master . 

Что означает начало отслеживания, называемое master в текущем проекте ( . ).

В качестве альтернативы вы можете использовать (и я предпочитаю это, на самом деле):

 git checkout --track origin/master 

Оба метода дадут вам почти идентичный результат: вы больше не будете находиться в состоянии автономного состояния HEAD, но в локальном филиале, который будет отслеживать удаленное отделение.

На этом этапе вы можете совершать локальные коммиты и нажимать их непосредственно вверх по потоку, используя стандартный git push (но это может не разрешаться политикой сервера), или вы можете отправить на проверку кода Gerrit (рекомендуется и по умолчанию используется для большинства магазинов Android). Как только отслеживающая ветка находится на своем месте, отправка в Gerrit так же просто, как

 repo upload # upload changes in multiple repositories at once 

или

 repo upload . # upload changes in current git repo only, fast! 

(Это предполагает, что ваш манифест содержит правильные настройки для сервера просмотра).