【実務・中級編】Gitプロの嗜み:シェルスクリプトで独自のGitコマンドを作成して業務を自動化する裏技 – バージョン管理・CI/CD活用バイブル

Gitの「作法」を超えろ:独自サブコマンドで開発速度を極限までブーストする技術

こんにちは。DevOpsの現場で数多のプロジェクトを渡り歩いてきたが、いまだに「`git checkout -b` を打って、`git push` して、PRのURLをコピーして…」というルーチンワークを人力でやっているエンジニアを見ると、心の底から「もったいない」と感じる。

Gitは単なるバージョン管理ツールではない。CLIというインターフェースを備えた、拡張可能なOSそのものだ。

今回は、Gitの標準機能を拡張し、君の指先と開発フローを直結させる「独自サブコマンド」の作り方と、プロの現場で生き残るための設定術を伝授する。

—

1. なぜ「独自Gitコマンド」が必要なのか?

Gitには `git-xxx` という名前の実行ファイルをパスの通った場所に置くと、自動的に `git xxx` として認識する仕組みがある。これを利用しない手はない。

「コンテキストスイッチのコスト」を極限まで減らすのが、一流のエンジニアの嗜みだ。

実装例:最強のブランチ作成スクリプト `git-feature`

ブランチ作成、リモート追跡、ついでにIssue番号に応じたプレフィックス付与。これをワンライナーで実行するスクリプトを作ろう。

!/bin/bash
保存先: /usr/local/bin/git-feature (要 chmod +x)

BRANCH_NAME=$1

if [ -z “$BRANCH_NAME” ]; then
echo “Usage: git feature ”
exit 1
fi

1. 最新のmainを取り込む
git checkout main
git pull origin main

2. 新規ブランチ作成
git checkout -b feature/$BRANCH_NAME

3. リモートへプッシュ(追跡ブランチ設定付き)
git push -u origin feature/$BRANCH_NAME

echo “🚀 Branch ‘feature/$BRANCH_NAME’ created and pushed!”

これだけで、君のコンソール操作は一つ減る。この「一つ」の積み重ねが、1日を通した集中力の維持に大きく寄与する。

—

2. プロのツールボックス:Gitを加速させる「神プラグイン」

CLIだけで生きるのも潔いが、現代の環境では「情報の可視化」が不可欠だ。

  • [delta](https://github.com/dandavison/delta): `git diff` を見やすくするツール。これを入れるだけで、コードレビューの速度が3倍になる。シンタックスハイライトとサイドバイサイド表示は必須。
  • [fzf](https://github.com/junegunn/fzf): コマンドラインの曖昧検索。`git branch` や `git log` の結果を `fzf` にパイプすれば、目的のブランチやコミットに一瞬で到達できる。
  • [gh (GitHub CLI)](https://cli.github.com/): もはや説明不要。`gh pr create` でPR作成まで完結させるのが現代の標準。

—

3. チーム開発の「設定共有」はこうあるべき

個人の好みを押し付けるのはナンセンスだが、「絶対的な規約」は設定ファイルとして共有すべきだ。

`.gitconfig` のベストプラクティス(includeIfを活用せよ)

グローバル設定とプロジェクトごとの設定を分けるのがプロの流儀だ。`~/.gitconfig` に以下のように記述する。

[includeIf “gitdir:~/work/company-a/”]
path = ~/work/company-a/.gitconfig-local

[alias]
# 常用するコマンドを短く定義
st = status -sb
co = checkout
br = branch
lg = log –graph –oneline –all

`.gitconfig-local` には、会社用のメールアドレスや署名用のGPGキーを指定する。これで「個人用と業務用のメールアドレスを間違えてコミットした」という事故を物理的に防げる。

—

4. 現場で震えるほど役立つハック:設定ファイル(YAML/JSON)の運用

CI/CDパイプラインを組む際、設定ファイルをYAMLで管理することが多いだろう。ここで重要なのは「スキーマ駆動」である。

.github/workflows/main.yml の構成例

CIの高速化:不要なジョブをスキップする条件を明確に
name: CI
on:
push:
branches: [ main ]
paths:

  • ‘src/’ # ソースコード変更時のみ実行

jobs:
test:
runs-on: ubuntu-latest
steps:

  • uses: actions/checkout@v4
  • name: Cache dependencies # キャッシュ戦略を怠るな

uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles(‘/package-lock.json’) }}

  • run: npm install && npm test

ポイント:

  • `paths` フィルタリングで不要なテストを回さない。
  • `cache` アクションを徹底し、依存関係の解決を数秒に抑える。

—

最後に:Gitを「使いこなす」とは

ツールを導入し、ショートカットを覚えることは、単なる「効率化」ではない。君の脳内にあるロジックを、最小のレイテンシでコードとして出力するための儀式だ。

今日から、君のGit操作にオリジナルの色を付けてみてほしい。既存のコマンドに不満があるなら、自分で作ればいい。それが、この過酷な開発現場を生き抜くエンジニアの特権だ。

次に現場で会うとき、君のCLIからどんな「魔法」が飛び出すか楽しみにしている。

タイトルとURLをコピーしました