コマンドに好きな名前を登録する「alias(エイリアス)」とは
ここでGitの機能である「alias(エイリアス)」を紹介します。その名の通り、各Gitコマンドにエイリアス(別名)を登録できます。これまでに紹介してきたコマンドについて、「便利そうだけど毎回入力するのは面倒だな」と感じた方もいるかもしれません。そのようなコマンドやオプションも、自分で好きなようにエイリアスを登録できます。
エイリアスは、Gitの設定を行えるgit config
コマンドで登録するか、設定ファイルを直接編集することで登録できます。今回は、設定ファイルを直接編集する方法で説明します。
また設定の有効範囲については、ユーザー配下のレベルとなるように--global
オプションを利用します。設定対象となるレベルは3つあるのですが、ここでは詳細は割愛します。
さて、エイリアスを登録してみましょう。直接編集するファイルを開くか、以下のコマンドを実行してファイルを開きます。
% git config --global --edit
たとえば、git log --oneline
をgit log-o
というエイリアスで登録したい場合は、ファイルに以下のように追記します。
[alias] log-o = log --oneline
ひとつでもエイリアスを登録している場合は、[alias]
の行が存在しているはずなので、その下に追記していきましょう。はじめて登録する場合は、[alias]
の行から登録します。
登録後は、以下のようにエイリアスを使ってコマンドを実行できます。
% git log-o f1b64e1 (HEAD -> main) コメントを追加 d636649 型チェックを追加 dd825e8 異常値に対応 ef87057 文字列の長さを取得する関数を追加 f3232e7 Merge branch 'feature/add'
登録したエイリアスの一覧を表示する
ここで、筆者が個人的に設定しているエイリアスの中で便利だと思っている2つを紹介します。
ひとつ目は、「登録したエイリアスの一覧を表示する」エイリアスです。 Gitの場合、コマンドでエイリアスのみの一覧を表示することはできません。git config --list
でエイリアスを含んだ設定の一覧を表示し、この一覧からエイリアスのみを取り出して表示します。エイリアスとして何を登録しているか忘れてしまったり、詳細を確認したりする場合に便利です。 設定する内容は以下の通りです。
!git config --list | grep ^alias
以下のように実行できます。
% git alias alias.log-o=log --oneline alias.alias=!git config --list | grep ^alias
マージ済みのブランチを削除する
次は、特定のブランチにマージ済みのブランチを削除するエイリアスです。mainブランチから開発作業用のブランチを切り、開発完了後はmainブランチにマージしていく、という運用だったとします。開発が完了したコードはmainブランチにマージされるため、mainブランチにマージされたブランチは削除しても問題ありません。
たとえば、以下の状態だったとします。
% git branch feature/test * feature/test-2 main % git log --oneline --graph * f63fd7b (HEAD -> feature/test-2) コミット2-1 * 84d2f37 (main) Merge branch 'feature/test' |\ | * 2da89e8 (feature/test) コミット1-2 * | 835e700 コミット2 |/ * 9e3d3c5 コミット1
現在、mainブランチにfeature/testブランチがマージ済み(84d2f37のコミットでマージされている)の状態です。feature/test-2はmainにはマージされていません。このような状況で、feature/testブランチを消してしまいたいです。
設定する内容は以下の通りです。
!git branch --merged | grep -E -v '\\*|main' | xargs git branch -d
「現在チェックアウトしているブランチにマージ済みのブランチから(git branch --merged
)、現在チェックアウトしているブランチとmainブランチを除いて(grep -E -v '\\*|main
)、削除する(xargs git branch -d
)」といった流れになっています。
実際にこのエイリアスを利用するときは、以下の手順で操作します。
- mainブランチをチェックアウトする
-
pull
する - エイリアスを実行する
マージ済みだとしても削除したくないブランチもあると思うので、それらも除外対象に追加すると良いでしょう。また、「mainブランチをチェックアウトして、pullする」というコマンドをエイリアスの先頭に追加すると、さらに便利に使えそうです。
とくにエイリアスについては、設定内容は必ずしも上記のようでなければならないというわけではありません。エイリアスの内容を工夫すれば、もっと綺麗な見た目にしたり、表示される情報を増やしたりといったことも可能です。筆者自身も、本稿で説明したエイリアスにさらにコマンドを追加し、自分にとって使いやすい表示や処理にしています。今回の設定は、一例として参考にしていただければと思います。
ローカル環境はいつも綺麗に──タスク前のひと手間でミスを起こしにくく
エイリアスの項目でも話題にしましたが、ローカルブランチやリモート追跡ブランチがいつまでも残って、溜まってしまうことがあるかと思います。とくに不要なローカルブランチが溜まっていると、今後もそのブランチに対応が必要なのか分からなくなってしまったり、切り替え先を間違えてしまったりという問題が起こる可能性があります。ブランチをいちいち手動で消すのは面倒かもしれませんが、エイリアスを登録して1コマンドで消せるように設定する、個人の開発手順の一部にするなど、積極的に不要なブランチを削除することをオススメします。ちなみに筆者は、タスクに着手する際に、以下の手順から作業を始めるようにしています。
-
git pull
で開発の中心ブランチ(作業ブランチの分岐元、マージ先)を最新にする。 - 中心ブランチにマージ済みのブランチを削除。その際、エイリアスに登録したコマンドを利用する。
- 中心ブランチから新しい作業ブランチを作成する。
上記の手順を通じて、開発の中心となるブランチと作業中のブランチの2つのみがローカルに存在するように心がけています。
また、コードレビューをするために他の人のコードをローカルに取り込む際には、fetch
コマンドに--prune
オプションをつけて実行しています。このオプションを利用することで、リモートで削除されたブランチの情報をローカルへ反映できます(リモート追跡ブランチの削除)。 こちらもエイリアス登録しています。
ミスをしないように気をつけることも大事ですが、ミスが起こりにくい作業環境を整えることも重要です。とくに、ローカル環境は基本的には自分で整備していく必要があります。自分の作業手順を見直すなどして、ミスが起こりにくい作業環境を作っていきましょう。また、チームのメンバーにもどのようにローカル環境を管理しているか、聞いてみると良いと思います。自分が知らない便利なエイリアスを登録しているかもしれません。
まとめ
今回は以下について説明させていただきました。
- ブランチ戦略と開発フロー
- 便利なコマンドの紹介
第3回では、Gitの学び方について、筆者自身の経験も踏まえてまとめていく予定です。