【神ツール】Gitのコミット履歴をExcel感覚で一括編集!「Git-knife」が爆速で便利すぎる
Show HN: Git-knife – Edit commit messages, authors, and dates like a spreadsheet
Show HN: Git-knife – Edit commit messages, authors, and dates like a spreadsheet
Gitのコミットメッセージや著者、日付をスプレッドシートのように直感的に編集できるCLIツール「Git-knife」が公開されました。履歴の修正が面倒だと感じている全エンジニア必見です。
これ面白そう!スクリーンショットってどこかで見られる?
うーん、これって本来やるべきじゃないことを簡単にできるようにしちゃってる気がするな。
面白そうだけど、コミットの作成者とか日付を書き換える必要って実際あるものなのかな?
「Gitを再実装するのではなく、システムのgit CLIを呼び出してgit commit-treeでコミットを再構築する。各コミットの元のツリーを再利用するため、ファイルの中身が変更されることは証明上ない」
LLMがこの点に触れてくれてよかった。Gitの再実装をしてるんじゃないかと心配してたんだ。
git-notesを使っている点と、独自のネームスペースにバックアップブランチを作成してくれるのは評価できるね。ただ、もう少し軽量だと嬉しいかな。
言及されていなかったみたいだけど、https://github.com/mystor/git-revise もチェックしてみるといいかも。
スクリーンショットがモニターを直撮りした写真になってるみたいだね。なんでプリントスクリーンを使わなかったのか不思議でならない。そのせいか、正直このプロジェクトには触れたくないなという気持ちになってしまう。
注意:これは複数人の作成者による署名付きコミットを使っているリポジトリでは機能しないし、機能させられないよ。
署名付きのGit履歴は不変だし、署名なしのGit履歴はサプライチェーン攻撃のベクターになり得るからね。
とはいえ、PRを送る前のクリーンアップ用として、個人のWIPブランチで使う分には便利かもしれない。
面白いことに、これこそ私がもう10年近く定期的に探し続けていたもので、実は昨日もまた検索したばかりなんだ。気になる人のために説明すると、私のユースケースはモデル議会(参考: https://news.ycombinator.com/item?id=43474850 )で、法律を保存するのにGitを使い、コミットで法律そのものを表現しようとしている。問題は、各コミットが正確なメタデータを持つことを「保証」する必要があるという点で、コミットハッシュの維持なんて全く気にしていないんだ。もし法律を一つ入れ忘れてインタラクティブ・リベースで履歴に入れ込むとしても、後続の全コミットの日付が現在のタイムスタンプにリセットされてはいけない。要するに、Gitを歴史アーカイブとして使いたいわけだ。これが見つかって本当に嬉しいよ。