Android のコードを操作するには、Git(オープンソースのバージョン管理システム)と Repo(Google が構築した Git 上で実行できるリポジトリ管理ツール)を使用する必要があります。Repo と Git の関係についての説明と、各ツールのサポート ドキュメントについては、ソース管理ツールを参照してください。
フロー
Android 開発には、以下の基本的なワークフローが含まれます。
repo start
を使用して、新しいトピック ブランチを開始します。- ファイルを編集します。
git add
を使用してステージを変更します。git commit
を使用して変更内容を commit します。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
コマンドが同期の競合を返した場合の手順です。
- マージしていないファイルを表示します(ステータス コード = U)。
- 必要に応じて、競合する場所を編集します。
- 関連するプロジェクト ディレクトリに移動します。影響を受けているファイルを追加して commit し、変更をリベースします。
git add .
git commit
git rebase --continue
- リベースが完了したら、再度全体の同期を開始します。
repo sync PROJECT0 PROJECT1 ... PROJECTN
クライアントをクリーンアップする
Gerrit に変更をマージしたら、ローカルの作業ディレクトリを更新してから、repo prune
を使用して、古いトピック ブランチを安全に削除します。
repo sync
repo prune
クライアントを削除する
すべての状態情報はクライアントに保存されているため、必要な作業は、ファイル システムからディレクトリを削除することだけです。
rm -rf WORKING_DIRECTORY
クライアントを削除すると、レビュー サーバーにアップロードされていないすべての変更が完全に削除されます。