ソース管理ワークフロー

Android のコードを操作するには、Git(オープンソースのバージョン管理システム)と Repo(Google が構築した Git 上で実行できるリポジトリ管理ツール)を使用する必要があります。Repo と Git の関係についての説明と、各ツールのサポート ドキュメントについては、ソース管理ツールを参照してください。

フロー

Android 開発には、以下の基本的なワークフローが含まれます。

  1. repo start を使用して、新しいトピック ブランチを開始します。
  2. ファイルを編集します。
  3. git add を使用してステージを変更します。
  4. git commit を使用して変更内容を commit します。
  5. repo upload を使用して、変更内容をレビュー サーバーにアップロードします。

タスク

Android コード リポジトリで Git と Repo を操作するには、次の一般的なタスクを実行します。

コマンド 説明
repo init 新しいクライアントを初期化します。
repo sync クライアントをリポジトリに同期します。
repo start 新しいブランチを開始します。
repo status 現在のブランチのステータスを表示します。
repo upload レビュー サーバーに変更内容をアップロードします。
git add ファイルをステージングします。
git commit ステージングされたファイルを 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].. プッシュしていない commit を表示します。

Repo を使用してソースをダウンロードする方法については、ソースのダウンロードRepo コマンド リファレンスを参照してください。

クライアントを同期する

使用可能なすべてのプロジェクトのファイルを同期するには次のコマンドを実行します。

repo sync

選択したプロジェクトのファイルを同期するには次のコマンドを実行します。

repo sync PROJECT0 PROJECT1 ... PROJECTN

トピック ブランチを作成する

変更(バグや新機能に関する作業など)を開始する場合は、ローカルの作業環境でトピック ブランチを作成します。トピック ブランチは、オリジナル ファイルのコピーではありません。ローカル ブランチ作成やブランチ間での切り替えの操作を軽量化するための、特定の commit へのポインタです。ブランチを使用すると、作業の一部を他の作業から分離できます。トピック ブランチの使用に関しては、トピック ブランチの分離をご参照ください。

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 に指示するには、変更内容をマークするかステージングして、commit に含める必要があります。

変更内容をステージングするには次のコマンドを実行します。

git add

このコマンドは、プロジェクト ディレクトリ内のファイルやディレクトリの引数を受け取ります。git add は、その名前とは異なり、Git リポジトリにファイルを追加するだけではなく、ファイルの変更や削除をステージングするためにも使用できます。

クライアントのステータスを表示する

ファイルの状態を一覧表示するには次のコマンドを実行します。

repo status

commit されていない編集(commit としてマークされていないローカルの編集)を表示するには次のコマンドを実行します。

repo diff

commit されている編集(commit としてマークされたローカルの編集)を表示するには、対象のプロジェクト ディレクトリ内にいることを確認してから、cached 引数を指定して git diff を実行します。

cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached

変更を commit する

commit は、Git のリビジョン管理の基本単位で、プロジェクト全体のディレクトリ構造とファイルの内容のスナップショットです。Git で commit を作成するには次のコマンドを実行します。

git commit

commit のメッセージのプロンプトが表示されたら、AOSP に送信する変更内容に関して、簡潔で有用なメッセージを入力します。commit メッセージを追加しないと、commit は失敗します。

Gerrit に変更をアップロードする

最新のリビジョンに更新してから、変更をアップロードするには、次のコマンドを実行します。

repo sync
repo upload

これらのコマンドは、commit した変更内容のリストを返し、レビュー サーバーにアップロードするブランチを選択するよう求めます。ブランチが 1 つしかない場合は、単純な y/n プロンプトが表示されます。

同期の競合を解決する

以下は、repo sync コマンドが同期の競合を返した場合の手順です。

  1. マージしていないファイルを表示します(ステータス コード = U)。
  2. 必要に応じて、競合する場所を編集します。
  3. 関連するプロジェクト ディレクトリに移動します。影響を受けているファイルを追加して commit し、変更をリベースします。
    git add .
    git commit
    git rebase --continue
    
  4. リベースが完了したら、再度全体の同期を開始します。
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

クライアントをクリーンアップする

Gerrit に変更をマージしたら、ローカルの作業ディレクトリを更新してから、repo prune を使用して、古いトピック ブランチを安全に削除します。

repo sync
repo prune

クライアントを削除する

すべての状態情報はクライアントに保存されているため、必要な作業は、ファイル システムからディレクトリを削除することだけです。

rm -rf WORKING_DIRECTORY

クライアントを削除すると、レビュー サーバーにアップロードされていないすべての変更が完全に削除されます。