Android Studio最速入門~効率的にコーディングするための使い方

第25回 バージョン管理 ─Git連携の使い方[前編]

この記事を読むのに必要な時間:およそ 4.5 分

コミット&プッシュ

コミットの手順は前回紹介したとおりです。何通りかありますので,各自気に入った方法でコミットを実行してください。⁠Commit Changes」ダイアログの詳細は後の回でまとめて説明するので,今回はGitに関係のある部分のみ補足します。

図13 ⁠Commit Changes」ダイアログ

図13 「Commit Changes」ダイアログ

このダイアログでGit固有のものは右上にある「Author」「Ament commit」の2つです。

Author

コミットするユーザ名を指定します。省略すると <HOME>/.gitconfiguser.name, user.emailが採用されます。

「Author」の指定方法はgit commit --author=<author>オプションの指定に従います。git-commitコマンドのヘルプを読むとわかりますがA U Thor <author@example.com>形式で指定します。つまり,次のような指定はNGで,

  • john.doe@example.com

以下のような指定がOKになります。

  • John Doe <john.doe@example.com>
  • john.doe@example.com <>

「Author」を指定して図14のようなエラーになった場合は,⁠Author」に指定した形式が間違っていたことを疑ってください。

図14 ⁠Author」の形式間違いによるコミットエラー

図14 「Author」の形式間違いによるコミットエラー

Amend commit

ここをONにすると,コミットのやり直しgit commit --amendを行います。

「Amend commit」にはAndroid Studioの仕組み的な欠陥があります。コミット指示を行う「Commit Changes」ダイアログですが,ローカル環境に何かしらの変更がないと"Commit Changes"を実行しても表示されません。

図15 何の変更もない状態で "Commit Changes"を実行した場合

図15 何の変更もない状態で

そのため「コミットログだけ書き直したい」という用途には使えません(とても残念です⁠⁠。

コミット後すぐにプッシュを行うのであれば,このダイアログの「Commit and Push...」ボタンを押します。コミットとは関係なくプッシュのみを行いたい場合は,"VCS Operations Popup..."かメニューバーの「VCS → Git」から"Push..."を実行してください。

[コラム]改行コードについて

どうもGitの流儀ではリポジトリ上の改行コードは「LF」であることが望ましいようです。WindowsやMac, Linuxなど異なるプラットフォームが混在してる環境では改行コードのポリシーを決めることが大事になります。

Android Studioは自身が作成するファイルの改行コードを「Preferences / Code Style / General」で指定する事ができますが,Gitリポジトリから取得するファイルの改行コードに影響を与えることができません。それはリポジトリ操作をAndroid Studio自身ではなくgitコマンドが行っているためです。

図16 ⁠Preferences / Code Style / General」設定画面の改行コードの指定

図16 「Preferences / Code Style / General」設定画面の改行コードの指定

そのため,たとえばWindowsで「Preferences / Code Style / General」「Line separator (for new files)」「Unix or OS X(\n)」と設定していても改行コードが「CR/LF」で取得される事があります。

Gitにおける改行コードの設定は<HOME>/.gitconfigautocrlfで指定します。くわしくは以下のリンクを参照してください。

Android Studioでは「Preferences / Version Control / Git」「Warn if CRLF line separators are about to be committed」で改行コードが「CR/LF」のままコミットしようとしているかをチェックできます。

図17 ⁠Preferences / Version Control / Git」設定画面

図17 「Preferences / Version Control / Git」設定画面

たとえばWindowsで <HOME>/.gitconfigリスト1のような設定で,改行コードに「CR/LF」を含むファイルをコミットしたとします。

リスト1 .gitconfigの例

autocrlf = false

すると,図18のような警告ダイアログが表示されます。

図18 ⁠Line Separators Warning」ダイアログ

図18 「Line Separators Warning」ダイアログ

ここで「Fix and Commit」を選択すると,対象ファイルの改行コードを「LF」に変換してコミットし,<HOME>/.gitignoreリスト2のように書き換えます。

リスト2 .gitconfigの書き換え例

autocrlf = true

プッシュを実行すると,図19のようなダイアログが表示されます。

図19 ⁠Git Push」ダイアログ

図19 「Git Push」ダイアログ

前回の手順でGitHubに公開している場合はすでにローカルのmasterブランチはリモートのorigin/masterブランチのトラッキングブランチに設定してあるため,なにもせずに「Push」ボタンを押すだけで良いです。

新しくブランチをプッシュする場合は,ダイアログ下部にある「Push current branch to alternative branch」をONにして,隣のドロップダウンリストからリモートリポジトリを選び,さらにその隣のテキストフィールドに作成したいブランチ名を入力します(ローカルブランチ名がプリセットされます⁠⁠。

図20 プッシュ先のリモートブランチを指定する例

図20 プッシュ先のリモートブランチを指定する例

ローカルのブランチがリモートのトラッキングブランチになるとローカルブランチ名 -> リモートブランチ名というように表記されます。これは「Git Branches」ポップアップからも確認できますので覚えておいてください。

図21 トラッキングブランチかどうかの確認

図21 トラッキングブランチかどうかの確認

[前回の補足]自力でGitHubをリモートリポジトリに登録した場合

前回のコラムのように,Android StudioのGitHub連係機能を用いず自力でリモートリポジトリを追加した場合,当然のようにローカルのmasterブランチは追跡ブランチにはなっていません。

そのため初回のプッシュ処理では,先ほどと同様に「Push current branch to alternative branch」をチェックし,リモートブランチと紐付けるようにしてください。

GitHub以外のリポジトリをリモートリポジトリに登録した場合も同様です。

後編の予定

前編では紹介できなかったブランチ・マージや,その他のGitコマンドの実行方法について紹介します。

[コラム]最近のAndroid Studio

ここ最近のアップデートで気になるインターフェイスが追加されたので,ちょっと紹介しておきます。Anroid Studio v0.3.0かv0.3.1のどちらかからだと思うのですが,ツールバーの右端に「Search Everywhere」という機能が追加されました。

図22 ツールバーの「Search Everywhere」アイコン

図22 ツールバーの「Search Everywhere」アイコン

ツールチップからもわかるとおり「クラス」⁠ファイル」⁠ツールウィンドウ」⁠アクション(コマンド⁠⁠Preferencesの)設定項目」を横串で検索できるようです。ツールバーのアイコンをクリックすると図23のように「最近使ったファイル一覧(Recent Files⁠⁠」が表示され,テキストフィールドにタイプした文字に応じて該当項目が絞り込まれていきます。

図23 ツールバーの「Search Everywhere」アイコンの実行例

図23 ツールバーの「Search Everywhere」アイコンの実行例

いちいちマウスを使うのは面倒だと思いますが,同機能は「SHIFTキーを2回押す」ことでも実行されます。

図24 SHIFTキーの2回押しで"Search Everywhere"を実行する(クリックすると動きがわかります)

"Find Action"や「Navigate」メニューの"Class...","File..."が統合されて一見便利そうにも思えるのですが,いろんな種類の結果が一度に出てくるため目的の項目に絞り込むのが面倒くさいという弊害もありました。

とはいえ「SHIFTキー2回押し」は覚えやすいショートカットキーなので,これから洗練されて使い勝手が良くなることを期待します。

著者プロフィール

今井勝信(いまいまさのぶ)

システムエンジニア。日本ユニシス株式会社所属。仙台在住。

Android開発はまったくやったことがないけれどIntelliJ IDEAが大好き。

Twitter: @masanobuimai