基本のGitだけでは足りない時の悩み
スプリントの終わりになると、いつも面倒なルーチンに陥ります。大量の古いブランチの削除、手動での変更履歴(changelog)の更新、そしてどのファイルがリファクタリングの優先順位が高い「ホットスポット」なのかを上司に報告することです。
実際、デフォルトのGitは非常にシンプルです。ローカルとリモートの両方でブランチを削除するには、少なくとも git branch -d name と git push origin --delete name という2つのコマンドを打つ必要があります。チームのコミット統計を確認したい場合は、git shortlog に grep や awk を組み合わせた複雑なフラグ操作と格闘することになります。
Gitを長く使っていますが、こうした繰り返しの作業は非常に時間がかかると感じています。職場のDevOpsエンジニアはよく「Gitはコードを管理するために生まれたもので、プログラマーの記憶力を試すためにあるのではない」と冗談を言っています。
なぜデフォルトのGitコマンドは時に不便なのか?
Gitはもともとアトミック(原子単位)なコマンドとして設計されています。独自のワークフローを構築するための最小限の部品を提供しているのです。しかし、このアプローチは現代のプロジェクト管理において、いくつかの弱点があります。
- 統合性の欠如: Gitはコードの追跡には強いですが、リポジトリの全体像(誰が最も貢献しているか、どのファイルが最も頻繁に変更されているかなど)を把握する機能が不足しています。
- 煩雑なワークフロー: 実際のタスクの多くは、3〜4つの個別のコマンドを組み合わせなければ完了しません。
- 非技術的タスクの自動化の難しさ: CHANGELOGの作成やリリースタグの管理には、別途外部スクリプトが必要になることがよくあります。
よくある「手動」での対処法
Git-extrasを知る前、私と同僚は主に3つの方法でやりくりしていました。
- 手動でコマンドを打つ: この方法は遅く、非常に間違いやすいです。ブランチ削除コマンドを打つ時に一瞬でも気を抜くと、一日の成果が消えてしまうこともあります。
- Git Aliasの設定: 私の
.gitconfigファイルは、以前はgit coやgit stといった数十個のエイリアスで埋め尽くされていました。しかし、エイリアスでは複雑なロジックを処理したり、チーム全体で共有したりするのが困難です。 - GUI(SourceTree、GitKraken)の使用: これらのツールは直感的ですが、動作が重くなりがちです。特に、急ぎでサーバーにSSH接続して作業する必要がある場合、グラフィカルインターフェースを開くことはできません。
解決策:Git-extras — ターミナル向けの強力なツールセット
色々探した結果、偶然 Git-extras に出会いました。これは170以上の補助スクリプトを集めたもので、複雑なタスクを短いコマンドに変換してくれます。自分でスクリプトを書く代わりに、インストールするだけでその恩恵を受けられます。
Git-extrasのインストール方法
インストールは、一般的なパッケージマネージャーを使って簡単に行えます。
macOSの場合:
brew install git-extras
Linux (Ubuntu/Debian)の場合:
sudo apt-get install git-extras
Windowsの場合:
WSLを使用している場合は、Linuxと同様にインストールしてください。純粋なGit Bashの場合は、scoop を使用するのがおすすめです。
scoop install git-extras
毎日15分を節約できる便利なコマンド
ここでは、開発者にとって必須と言える「黄金」のコマンドを紹介します。
1. git summary:プロジェクトのレポートを1秒で出力
初めて見るリポジトリを担当した際、あちこち聞き回る代わりに git summary と打つだけです。このコマンドは、コミット数、最もアクティブな作者、プロジェクトの期間(例:2 years, 3 months)などの統計表を出力します。コードベースの健康診断書のようなものです。
2. git effort:最も「熱い」ファイルを見つける
このコマンドは、リファクタリングの計画を立てる時に非常に役立ちます。ファイルとそれぞれのコミット数をリストアップします。「effort」の数値が高いファイルは、変更頻度が非常に高いことを意味し、God Object(肥大化したオブジェクト)やバグの温床である可能性を示唆しています。
git effort --above 10
結果には10回以上変更されたファイルが特定されるため、チームは最適化すべき場所に集中できます。
3. git delete-branch:1つのコマンドでクリーンアップ
ローカルとリモートの両方で削除コマンドを打つ必要はありません。Git-extrasなら、これだけで済みます:
git delete-branch feature-login
システムが自動的にスキャンし、両方の場所からそのブランチの痕跡を完全に消去します。迅速かつ非常に安全です。
4. git changelog:手動の日記作成におさらば
これはリリース時の救世主です。v1.0からv1.1までの履歴を手動で遡る代わりに、以下を使用します:
git changelog --final
このコマンドはコミットメッセージを自動的に集計し、プロフェッショナルな CHANGELOG.md ファイルを生成します。チームがConventional Commitsに従っている場合、その結果は非常に美しいものになります。
5. git ignore:ブラックリストにファイルを素早く追加
コーディング中に誤ってログファイルや一時ファイルを作成してしまったことはありませんか? .gitignore を開いてパスを貼り付ける代わりに、git ignore "*.log" と打つだけです。これにより、些細な作業で集中力を削がれることなく作業を続けられます。
8人のチームでの導入経験
私はプロジェクト開始時からチーム全員に Git-extras のインストールを勧めました。結果として、ブランチ管理の統一感が明らかに向上しました。サーバー上に数ヶ月も放置される「ゴミ」ブランチがなくなりました。
ちょっとしたコツ:毎朝のチェックのために git summary を git s というエイリアスにしています。また、git authors コマンドは、オープンソースプロジェクトで貢献者リストを作成するのに最適で、どんなに小さな貢献でもメンバー全員の努力を記録するのに役立ちます。
結論
Git-extrasはGitを置き換えるものではなく、Gitをより使いやすく、強力にするものです。コマンドラインを多用するなら、このツールセットでワークフローが目に見えてスムーズになるでしょう。単純な作業はGit-extrasに任せて、自分は重要なロジックの解決に集中しましょう。
インストール後に git extras --help と入力してみてください。日々のGit作業を根本から変えるような、何百もの興味深いコマンドが見つかるはずです。

