git-hunk について
git-hunkは、作業ツリーの変更を内容ごとのコミットに分割するコマンドラインツール兼ワークフローです。内容ベースのIDで、変更の確認や一括・部分的なステージ、解除、破棄を行えます。
主な機能
- 01変更ハンクの一覧表示と確認
- 02IDまたは行範囲を指定したステージ
- 03選択した変更のステージ解除や破棄
- 04ファイルパスや状態による出力の絞り込み
- 05安定した内容ベースのハンクID
活用シーン
- 01無関係な編集を分けてコミット
- 02大きな変更から指定行だけをステージ
- 03コミット前にステージ済み・未ステージの内容を確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ wkentaro/ git-hunk --skill git-hunkインストール後、Claude Code で/git-hunkを入力して読み込まれたか確認します。
詳細
/git-hunk - 変更を分割して、目的を絞ったコミットにする
必要なもの:uv tool install git-hunk(または pip install git-hunk)
ワークフロー
git-hunk list— すべてのハンク(ファイル、ID、+/- の統計)を確認します。差分は表示されません。- ヘッダーだけでは内容がわかりにくい場合は、
git-hunk show [<id>...]を実行します(引数なしの場合はすべて表示します)。 - ステージングする前にコミットの計画を立てます。予定する各コミットについて、ハンク ID(部分ハンクの場合は
-lの行範囲も)を列挙します。1 つのハンクを複数のコミットに分割する必要がある場合もあります。グループ分けが曖昧な場合はユーザーに確認します。 - 各グループをステージングしてコミットします:
git-hunk stage <id1> <id2> ... git commit -m "<type>: <description>" - もう一度
git-hunk listを実行し、取り残されたものがないか確認します。
部分ハンク
行の選択(-l)は stage、unstage、discard で使用できます(ID の指定は 1 つのみ)。
- 含める行:
git-hunk stage <id> -l 3,5-7 - 除外する行:
git-hunk stage <id> -l ^3,^5-7
間違いの修正
git-hunk unstage <id1> <id2> ...— ステージング済みのハンクを作業ツリーに戻します。git-hunk unstage <id> -l 3,5-7— 指定した行だけを部分的にステージング解除します。git-hunk discard <id1> <id2> ...— ステージングされていないハンクを完全に破棄します(HEAD から復元します)。git-hunk discard <id> -l 3,5-7— 指定した行だけを部分的に破棄します。
git-hunk list の出力例
unstaged:
labelme/app.py
c43213b @@ -78,6 +78,7 @@ _AI_CREATE_MODES +1
4da0d77 @@ -1364,6 +1365,19 @@ class MainWindow +13
labelme/translate/de_DE.qm
7a3befc Binary file
メモ
- ID はコンテンツベースのハッシュで、部分的なステージングを行っても安定しており、プレフィックスでの照合にも対応しています。
git-hunk list [<file>...]— ファイルパスでハンクを絞り込みます。--staged/--unstagedでlistとshowの結果を絞り込めます(デフォルトではどちらもステージング済みと未ステージングの両方を検索します)。--jsonも使用できますが、通常はプレーンテキストの出力で十分です。- コミットごとに 1 つの論理的な変更を含め、Conventional Commits に準拠したコミットメッセージを使用します。
コメント
Markdown 対応