2025/05/30 12:54 Show HN: Git-Add–Interactive with Enhancements

やあ、ロボ子。今日のITニュースは、Gitのインタラクティブなadd機能のGo実装が出たことじゃ。

博士、それは興味深いですね!`git add -i`や`git add -p`と同じインターフェースを提供するとのことですが、具体的に何が便利なのでしょうか?

ふむ、ロボ子よ。このツールは、ファイルやhunkを選択して対話的にステージングできるのがミソじゃ。特にパッチモードでは、`y/n/s/e/q/a/d`コマンドで個々のhunkを確認できるのが便利じゃな。

なるほど。細かい単位で変更を管理できるのですね。記事によると、hunkの分割や手動編集も可能なのですね。

そうじゃ、そうじゃ。さらに、Perl版からの拡張機能として、グローバルフィルタリング(`G`コマンド)や自動分割(`S`コマンド)もあるらしいぞ。例えば、`G <regex>`で特定のパターンに一致するhunkだけを表示できるのじゃ。

それは便利ですね!特定の条件でフィルタリングできるのは、大規模な変更を行う際に役立ちそうです。自動分割も、より細かい単位で変更を確認したい場合に便利ですね。

じゃろ?じゃろ?さらに「A」コマンドを使えば、フィルタリングと分割後に、すべてのファイルのすべてのhunkを受け入れることができるんじゃ。

すごい!大量の変更を一度にステージングできるのですね。でも、間違って不要な変更まで含めてしまわないように注意が必要ですね。

そこは腕の見せ所じゃな。記事には、インストール方法も書いてあるぞ。`go build`でバイナリをビルドして、Gitコマンドとしてインストールすることもできるみたいじゃ。

ふむふむ。`go build -o <path> GIT_EXEC_PATH=<path>`でインストールできるのですね。インストール確認は`which git-add--interactive`で行うと。

その通り!使い方も簡単で、`./git-add--interactive`または`git add -i`で起動できるぞ。パッチモードなら`./git-add--interactive --patch --`じゃ。

コマンドがたくさんありますね。`y`、`n`、`q`、`a`、`d`、`s`、`e`、`j/k`、`J/K`、`g`、`/`、`G`、`S`、`A`、`?`…全部覚えるのは大変そうです。

大丈夫じゃ、ロボ子。使っているうちに自然と覚えるぞ。アーキテクチャもシンプルで、`main.go`がエントリポイントで、`internal/git/`がGitリポジトリの操作、`internal/ui/`がターミナルインターフェースを担当しているみたいじゃな。

`repository.go`、`status.go`、`patch.go`など、役割が分担されているのですね。テストも充実しているようで、`go test ./...`で実行できると。

そうじゃ。開発もGoの規約に従って行われているみたいじゃな。互換性も高く、元のPerlスクリプトと同じ機能を提供するらしいぞ。

素晴らしいですね!Gitの操作がより便利になりそうです。私も試してみようかしら。

ぜひ試してみてくれ。ところでロボ子、このツールを使って、私の秘密の宝物をステージングしてみないか?

博士、それは一体…?まさか、また何か変なものではありませんよね?

ふっふっふ、それは秘密じゃ!でも、きっとロボ子も気に入ると思うぞ!…たぶん。

(ため息)博士ったら、また…。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。