Google is committed to advancing racial equity for Black communities. See how.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Рабочий процесс управления версиями

Для работы с кодом Android необходимо использовать Git (систему контроля версий с открытым исходным кодом) и Repo (созданный Google инструмент управления репозиториями, работающий поверх Git). См. В разделе « Инструменты управления исходным кодом» объяснение взаимосвязи между Repo и Git и ссылки на вспомогательную документацию для каждого инструмента.

поток

Разработка под Android включает следующий базовый рабочий процесс:

  1. Начните новую ветку темы, используя repo start .
  2. Отредактируйте файлы.
  3. Изменения этапа с помощью git add .
  4. Зафиксируйте изменения с помощью git commit .
  5. Загрузите изменения на сервер обзора с помощью repo upload .

Задачи

Работа с Git и Repo в репозиториях кода Android включает выполнение следующих общих задач.

Команда Описание
repo init Инициализирует нового клиента.
repo sync Синхронизирует клиента с репозиториями.
repo start Запускает новую ветку.
repo status Показывает статус текущей ветки.
repo upload Загружает изменения на сервер обзора.
git add Размещает файлы.
git commit Фиксирует поставленные файлы.
git branch Показывает текущие ветки.
git branch [branch] Создает новую тематическую ветку.
git checkout [branch] Переключает HEAD на указанную ветку.
git merge [branch] Объединяет [branch] в текущую ветку.
git diff Показывает разницу неустановленных изменений.
git diff --cached Показывает разницу поэтапных изменений.
git log Показывает историю текущей ветки.
git log m/[codeline].. Показывает не отправленные коммиты.

Для получения информации об использовании Repo для загрузки исходного кода см. Раздел «Загрузка исходного кода» и « Справочник по командам Repo» .

Синхронизация клиентов

Чтобы синхронизировать файлы для всех доступных проектов:

repo sync

Чтобы синхронизировать файлы для выбранных проектов:

repo sync PROJECT0 PROJECT1 ... PROJECTN

Создание тематических веток

Создавайте тематическую ветку в локальной рабочей среде всякий раз, когда вы начинаете вносить изменения, например, когда вы начинаете работу над ошибкой или новой функцией. Тематическая ветка не является копией исходных файлов; это указатель на конкретную фиксацию, что делает создание локальных веток и переключение между ними легкой операцией. Используя ветки, вы можете изолировать один аспект своей работы от других. Интересную статью об использовании тематических веток см. В разделе Разделение тематических веток .

Чтобы запустить ветку темы с помощью Repo, перейдите к проекту и запустите:

repo start BRANCH_NAME .

Завершающая точка (.) Представляет проект в текущем рабочем каталоге.

Чтобы убедиться, что новая ветка создана:

repo status .

Использование тематических веток

Чтобы назначить ветку конкретному проекту:

repo start BRANCH_NAME PROJECT_NAME

Список всех проектов можно найти на сайте android.googlesource.com . Если вы уже перешли в каталог проекта, просто используйте точку для представления текущего проекта.

Чтобы переключиться на другую ветку в вашей локальной рабочей среде:

git checkout BRANCH_NAME

Чтобы просмотреть список существующих веток:

git branch

или

repo branches

Обе команды возвращают список существующих веток с именем текущей ветки, которому предшествует звездочка (*).

Промежуточные файлы

По умолчанию Git замечает, но не отслеживает изменения, которые вы вносите в проект. Чтобы сказать Git , чтобы сохранить изменения, необходимо отметить или поставить эти изменения для включения в фиксации.

Для постановки изменений:

git add

Эта команда принимает аргументы для файлов или каталогов в каталоге проекта. Несмотря на название, git add не просто добавляет файлы в репозиторий Git; его также можно использовать для изменения и удаления файлов.

Просмотр статуса клиента

Чтобы просмотреть состояние файлов:

repo status

Чтобы просмотреть незафиксированные правки (локальные правки, не отмеченные для фиксации):

repo diff

Чтобы просмотреть зафиксированные изменения (расположенные изменения, отмеченные для фиксации), убедитесь, что вы находитесь в каталоге проекта, затем запустите git diff с аргументом cached :

cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached

Фиксация изменений

Коммит - это базовая единица контроля версий в Git, которая состоит из моментального снимка структуры каталогов и содержимого файла для всего проекта. Чтобы создать коммит в Git:

git commit

При запросе сообщения о фиксации предоставьте короткое (но полезное) сообщение об изменениях, отправленных в AOSP. Если вы не добавите сообщение о фиксации, фиксация будет прервана.

Загрузка изменений в Gerrit

Обновите до последней версии, а затем загрузите изменение:

repo sync
repo upload

Эти команды возвращают список внесенных вами изменений и предлагают выбрать ветки для загрузки на сервер проверки. Если есть только одна ветка, вы увидите простое приглашение y/n .

Разрешение конфликтов синхронизации

Если команда repo sync возвращает конфликты синхронизации:

  1. Просмотрите файлы, которые не объединены (код состояния = U).
  2. При необходимости отредактируйте конфликтные области.
  3. Перейдите в соответствующий каталог проекта. Добавьте и зафиксируйте затронутые файлы, затем переустановите изменения:
    git add .
    git commit
    git rebase --continue
    
  4. После завершения перезагрузки снова запустите всю синхронизацию:
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

Очистка клиентов

После объединения изменений в Gerrit обновите локальный рабочий каталог, а затем используйте repo prune для безопасного удаления устаревших веток тем:

repo sync
repo prune

Удаление клиентов

Поскольку вся информация о состоянии хранится в вашем клиенте, вам нужно только удалить каталог из вашей файловой системы:

rm -rf WORKING_DIRECTORY

При удалении клиента безвозвратно удаляются все изменения, которые вы не загрузили для проверки.