SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Git中級者への第一歩

【Git中級者への第一歩】リリースプロセスの品質を上げるブランチ戦略、開発をもっと便利にするコマンドとは

Git中級者への第1歩 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

コマンドに好きな名前を登録する「alias(エイリアス)」とは

 ここでGitの機能である「alias(エイリアス)」を紹介します。その名の通り、各Gitコマンドにエイリアス(別名)を登録できます。これまでに紹介してきたコマンドについて、「便利そうだけど毎回入力するのは面倒だな」と感じた方もいるかもしれません。そのようなコマンドやオプションも、自分で好きなようにエイリアスを登録できます。

 エイリアスは、Gitの設定を行えるgit configコマンドで登録するか、設定ファイルを直接編集することで登録できます。今回は、設定ファイルを直接編集する方法で説明します。

 また設定の有効範囲については、ユーザー配下のレベルとなるように--globalオプションを利用します。設定対象となるレベルは3つあるのですが、ここでは詳細は割愛します。

 さて、エイリアスを登録してみましょう。直接編集するファイルを開くか、以下のコマンドを実行してファイルを開きます。

% git config --global --edit

 たとえば、git log --onelinegit 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)」といった流れになっています。 

 実際にこのエイリアスを利用するときは、以下の手順で操作します。

  1. mainブランチをチェックアウトする
  2. pullする
  3. エイリアスを実行する

 マージ済みだとしても削除したくないブランチもあると思うので、それらも除外対象に追加すると良いでしょう。また、「mainブランチをチェックアウトして、pullする」というコマンドをエイリアスの先頭に追加すると、さらに便利に使えそうです。

 とくにエイリアスについては、設定内容は必ずしも上記のようでなければならないというわけではありません。エイリアスの内容を工夫すれば、もっと綺麗な見た目にしたり、表示される情報を増やしたりといったことも可能です。筆者自身も、本稿で説明したエイリアスにさらにコマンドを追加し、自分にとって使いやすい表示や処理にしています。今回の設定は、一例として参考にしていただければと思います。

ローカル環境はいつも綺麗に──タスク前のひと手間でミスを起こしにくく

 エイリアスの項目でも話題にしましたが、ローカルブランチやリモート追跡ブランチがいつまでも残って、溜まってしまうことがあるかと思います。とくに不要なローカルブランチが溜まっていると、今後もそのブランチに対応が必要なのか分からなくなってしまったり、切り替え先を間違えてしまったりという問題が起こる可能性があります。ブランチをいちいち手動で消すのは面倒かもしれませんが、エイリアスを登録して1コマンドで消せるように設定する、個人の開発手順の一部にするなど、積極的に不要なブランチを削除することをオススメします。ちなみに筆者は、タスクに着手する際に、以下の手順から作業を始めるようにしています。

  1.  git pullで開発の中心ブランチ(作業ブランチの分岐元、マージ先)を最新にする。
  2.  中心ブランチにマージ済みのブランチを削除。その際、エイリアスに登録したコマンドを利用する。
  3.  中心ブランチから新しい作業ブランチを作成する。

 上記の手順を通じて、開発の中心となるブランチと作業中のブランチの2つのみがローカルに存在するように心がけています。

 また、コードレビューをするために他の人のコードをローカルに取り込む際には、fetchコマンドに--pruneオプションをつけて実行しています。このオプションを利用することで、リモートで削除されたブランチの情報をローカルへ反映できます(リモート追跡ブランチの削除)。 こちらもエイリアス登録しています。

 ミスをしないように気をつけることも大事ですが、ミスが起こりにくい作業環境を整えることも重要です。とくに、ローカル環境は基本的には自分で整備していく必要があります。自分の作業手順を見直すなどして、ミスが起こりにくい作業環境を作っていきましょう。また、チームのメンバーにもどのようにローカル環境を管理しているか、聞いてみると良いと思います。自分が知らない便利なエイリアスを登録しているかもしれません。

まとめ

 今回は以下について説明させていただきました。

  • ブランチ戦略と開発フロー
  • 便利なコマンドの紹介

 第3回では、Gitの学び方について、筆者自身の経験も踏まえてまとめていく予定です。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Git中級者への第一歩連載記事一覧

もっと読む

この記事の著者

藤澤 千尋(フジサワ チヒロ)

 ソフトウェアエンジニアとして約10年働いており、最近は主にフロントエンド開発を担当しています。最近、筋トレを始めました。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/19413 2024/06/05 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング