この便利なGitツールで誰が何をしているかを発見しよう
要約
- git-whoは、単なる行ごとの著作権ではなく、包括的な著者ベースの洞察を提供します。
- git-whoを使用して、主要な貢献者を特定し、プロジェクトの階層を表示し、時間の経過に伴う貢献を追跡できます。
- git-whoは、その出力をカスタマイズし、結果をフィルタリングし、正確な統計のためにマージコミットを除外するオプションを提供します。
Git blameは便利ですが、行ごとの著作権者についてしか教えてくれません。オープンソースプロジェクトの包括的な著者ベースの概要が必要な場合は、このツールを試してみてください。
git-whoとは何ですか、そしてそれはgit blameとどのように異なりますか?
git-whoは、リポジトリ内のコミットの著者に関する有用で興味深い情報を表示するカスタムgitコマンドです。これを使用して、誰が最近コードを更新したか、どの著者が全体的に最も貢献したか、特定のサブコンポーネントで誰が作業しているかを発見することができます。
組み込みのgitコマンドgit blameは各コード行の著者について教えてくれますが、git-whoはファイル、ディレクトリ、そして全体のプロジェクトに関する詳細を提供します。
git-whoは端末ベースですが、そのデータをテーブルに表示し、色で強調することによって、魅力的で読みやすい出力を生成します。
git-whoのインストールと使用方法
git-whoをインストールする最も簡単な方法は、Homebrewパッケージマネージャーを使用することです。
brew install git-who
そのソフトウェアはソースから簡単にインストールでき、プロジェクトのリリースページから事前にコンパイルされたバイナリをダウンロードすることもできます。
インストール後、git-who または git who を使用して、gitリポジトリディレクトリ内で実行できます:
git-whoバイナリがあなたのPATHにあることを確認してください。特にソースからビルドした場合はそうしてください。これにより、git who形式のコマンドを使用できます。
このデフォルトビューはテーブルのサブコマンドです。これは、主要な貢献者の簡潔な概要を、最終編集と合計コミット数と共に表示します。git-whoは他に2つのコマンド、treeとhistをサポートしています。
treeサブコマンドは、各ディレクトリの隣にトップコントリビューターとその合計コミット数を表示しながら、リポジトリの完全な階層を示します。
第三のサブコマンドは hist で、「履歴」を意味します。このビューでは、日付ごとの貢献のタイムラインが表示され、プロジェクトの貢献者を時間の経過とともに追跡できます:
これはヒストグラムでもあるので、最もコミットが多い期間をすぐに見つけることができます。
いくつかのコマンドは、Linuxカーネルのような大きなリポジトリでは完了するのに長い時間がかかる場合があります。それらを高速化するために、git-whoの高度なオプションを使用して結果を絞り込んでみてください。
git-whoの高度な機能
git-whoの各サブコマンドには適切なデフォルト設定がありますが、リポジトリのサイズや構造によって非常に異なる結果が得られます。例えば、大規模なリポジトリでgit-who treeを実行すると、多くの行の出力が得られます。
git-who プログラムは、その動作や出力を微調整するためのいくつかのオプションをサポートしています。すべてのサブコマンドでは、特定の著者のみを含めるために --author を使用し、著者を除外するために --nauthor を使用できます。また、--since および --until オプションを受け入れて、日付によって出力を制限することもできます。
重要な点は、git-whoの統計にはデフォルトでマージコミットが含まれていないことです。これは、リポジトリの管理方法によって大きな違いを生む可能性があります。例えば、リーナス・トーバルズは彼自身のLinuxリポジトリの統計から著しく欠けています:
しかし、全体のメンテナーとして、トーバルズは非常に多くのマージを処理しており、マージを考慮に入れると彼が最も大きな貢献者である。--mergesオプションを使用すると:
git-whoテーブルのカスタマイズ
デフォルトのテーブルは合計コミットによってソートされます。これを -m オプションを使用して著者を最新のコミットでソートするように変更できます:
-lオプションは、コミットではなく変更された行に焦点を当てます。変更された行でソートし、変更されたファイルの数、追加された行の数、および削除された行を表示します:
出力を変更されたファイルで -f を使用してソートしたり、最初の変更で -c を使用してソートすることもできます。
git-whoツリーのカスタマイズ
最初にやりたいことは、ツリーの深さを制限することです。リポジトリに多くのファイルやディレクトリが含まれている場合、デフォルトのツリーコマンドは大量の出力を生成します。-dオプションを使用すると深さを指定できるため、例えばトップレベルのディレクトリだけの著者情報を表示することができます。
-lオプションは、最もコミット数が多い著者ではなく、変更行数が最も多い著者を選択します。それは各ファイルとディレクトリに、各著者がその時点で追加および削除した行数を注釈します:
git-whoヒストのカスタマイズ
histサブコマンドには、リポジトリの年齢に基づいて自動的に日、月、または年のビューを選択する、すでに整然とした組み込み機能があります。
--since および --until オプションは hist とよく連携して動作し、レポートされる期間を制限します。
これらのオプションは受け入れるフォーマットがかなり柔軟なので、試してみてください。例えば、これらすべてが機能するはずです。
- --2010年以来
- --since="2010-09-01 12:00:00"
- --昨日から
- --3週間前から
- --以来="2月24日"












