Show HN: Git-knife –コミットメッセージや著者、日付をスプレッドシートのように編集するツールです

2026/08/12 0:09

Show HN: Git-knife –コミットメッセージや著者、日付をスプレッドシートのように編集するツールです

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

修正サマリー: 最も重要な示唆は、git-knife がファイル内容を改変せず、コミットメタデータ(メッセージ、著者名、日付、メールアドレスなど)を編集することを目的とした安全でクロスプラットフォームなデスクトップ GUI ツールであるということです。GitKraken や Sublime Merge などの競合製品が日付を不変として扱うか、完全な書き換え機能を欠いているのに対し、git-knife はユーザーフレンドリーなインターフェースを通じて、すべてのアイデンティティおよび日付フィールドに対してバッチ処理による変更を可能にします。安全性は、Git の核心ロジックを再実装するのではなく、標準の

git
コマンド(例:
git commit-tree
)を実行するためのラッパーとして動作することで達成されています。現在 MVP ステータスにある本ツールの機能には、メッセージの再書き換え、すべてのメタデータフィールドの編集、バッチ処理による正規表現(regex)を使用した検索・置換が含まれますが、履歴の圧縮(squashing)、マージの書き換え、ブランチ管理などの高度な機能は欠如しています。安全に使用するためには、開発者は teammates の作業を意図的に上書きするのを防ぐために、単なる
--force
パスではなく
--force-with-lease
を使用して書き換えられた履歴をプッシュする必要があります。ソフトウェアには、いかなる書き換行之前にも自動적으로バックアップ参照(
refs/notes/git-knife
経由で保存され、物理的に
refs/knife-backup/<branch>/<epoch>
に配置される)を作成する堅牢な安全機構が含まれています。エラーが発生した場合でも、ユーザーは Backups パネルまたは
git reset --hard
などの CLI コマンドを通じて直ちに以前のステートに戻すことができます。Linux、macOS、Windows のいずれの環境で動作させるにも、Git 2.x、pnpm を含む Node.js、Rust stable が要求されます。開発の開始には
pnpm install
pnpm tauri dev
を使用し、パッケージ化には
tauri build
を使用します。また、GitHub Actions が
v0.1.0
のタグ付けに応答して自動的にリリースがトリガーされます。

本文

git-knife: 安全な Git 履歴整形ツール

git-knife
は、Git のコミットメタデータ(メッセージ、著者、日時など)をクリーンな GUI で編集可能にするツールです。ファイル内容を変更せず、システム標準の
git commit-tree
を活用して安全に履歴を再構築します。

既存の GUI ツールは日時変更に対応していない一方、CLI ツールには GUI がありません。

git-knife
はこの隙間を埋めることで、すべてのフィールドを一括かつ安全に編集することを可能にします。


機能比較概観

以下の表は主要な Git UI/CLI ツールの機能を比較しています。

ツールクリーン GUIメッセージ修正
(Reword)
順序入れ替え・結合・削除著者日時編集コミッター日時編集著者情報編集
(名前/メール)
一括検索置換 (正規表現)
git-knife🚧 予定中
GitKraken⚠️ Amend のみ⚠️
Sublime Merge⚠️ (Amend)
Fork⚠️
SmartGit⚠️
git-cola◐ 古く/TUI
lazygit (TUI)◐ TUI⚠️
git-filter-repo
(CLI)
Callback 経由

凡例:

  • ✅: 第一級機能
  • ⚠️: 可能だが面倒、制限あり(Amend など)
  • ◐: 旧式またはターミナル UI (TUI)
  • ❌: 非対応
  • 🚧: 予定中

現状の課題: 洗練された GUI ツールはメッセージや順序の編集には優れていますが、コミットの日時(特にコミッター日時)の変更や、著者情報の一括正規表現置換を支援するものは皆無です。一方、メタデータを再構築できる CLI ツールには GUI がありません。

git-knife
は両者の利点を兼ね備えた安全なフル機能 GUIを提供します。


MVP ステータス (現時点での実装状況)

✅ 対応済み機能

  • リポジトリのコミットリスト表示
  • すべてのメタデータ編集:
    • メッセージ、著者名/メール、著者日付
    • コミッター名/メール、コミッター日付
  • 一括検索・置換:
    • テキストまたは正規表現(例:誤ったメールアドレスの修正)による全件置換
    • 変更前のプレビュー表示
    • 適用前の自動バックアップ参照作成 + ワンクリック復元
    • リビルド操作への警告表示
  • マージコミット: ロック済み(編集不可)

⛔ 未対応機能

  • 順序入れ替え・結合・削除
  • マージコミットの書き換え
  • ステージング、ブランチ、リモートリポジトリの管理

インストールと開発環境

要件

  • Git (2.x)
  • Node.js + pnpm (
    corepack enable pnpm
    または
    npm i -g pnpm
    )
  • Rust (stable): rustup.rs からインストール
  • Linux システム用 Tauri 依存ライブラリ:
    # Debian/Ubuntu の場合
    sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \
      libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev
    

ローカル開発での実行

pnpm install
pnpm tauri dev

注:最初の

cargo build
では依存ライブラリのダウンロードとコンパイルが行われるため、数分かかります。

バンドルの構築 (パッケージング)

アイコンは既に

src-tauri/icons/
にコミット済みですが、新しい正方形 PNG から再生成する場合は以下のコマンドを使用します。

pnpm tauri icon path/to/icon.png

注:開発環境実行時には不要です。


オートメーションリリース (GitHub Actions)

.github/workflows/release.yml
に設定した
tauri-action
を使用して、macOS/Linux/Windows のネイティブインストーラーを構築し、GitHub Release に添付します。

タグを作成してリリースを切り出す方法:

git tag v0.1.0
git push origin v0.1.0

または、リポジトリの Actions タブ から手動でトリガーすることも可能です。

注:コード署名の設定はまだ行われていないため、ビルド結果は署名されていません(初期テスト段階では問題ありません)。


履歴の編集とプッシュ

コミットの編集手順

  1. リポジトリを開く
    Browse…
    で選択するか、パスを直接貼り付けます。
  2. コミットを選択・展開
    マージコミット以外の任意のコミットをクリックしてエディターを展開します。
  3. メタデータを変更
    メッセージ、著者/コミッターの名前、メールアドレス、日時を変更します。
    • 変更された行はハイライト表示されます。
    • 日時フィールドは元の UTC オフセット を保持します。
  4. 適用とレビュー
    Review & apply
    をクリックし、旧履歴 → 新履歴のプレビューを確認して承認します。

重要:

git-knife
ローカルブランチのみを書き換えます。リモートへ連絡したり自動プッシュしたりしません。プッシュは常にユーザーが明示的に行う必要があります。

一括検索・置換機能

コミットテーブル上部の [Bulk find & replace] ボタンをクリックして、複数のコミットを一度に編集します:

  1. フィールド選択:
    メッセージ、著者・コミッター名、メールアドレスなど、任意の組み合わせを選択します。
  2. パターン入力:
    • 検索条件と置換条件を入力します。
    • 正規表現を使用するには [Regex] を切り替え、
      $1
      などのバック参照を使います(デフォルトは文字通りの検索)。
    • デフォルト設定は区別大文字小文字に敏感です。
  3. 適用:
    パネルで一致数と置換数がリアルタイムでカウントされます。
    [Stage edits] でハイライトされた行を確定し、通常通り
    Review & apply
    します。

例: メールアドレスの全件修正
著者メール + コミッターメールをターゲットにし、検索に

old@example.com
、置換に
new@example.com
を指定します。

マージコミットはスキップされ、連続した操作は累積されます。

書き換え後のプッシュ

履歴の編集によりコミットのハッシュ値が変わるため、ローカルとリモート間に分岐が発生し、通常の

git push
は拒否されます。
リーザス(leases)付きで強制的にプッシュしてください:

git push --force-with-lease origin <branch>
  • なぜ
    --force-with-lease
    か?

    リモート側が移動した場合にプッシュを拒否するため、チームメンバーのコミットが無断で上書きされることを防ぎます。単純な
    --force
    より推奨されます。

警告:
編集対象がアップストリーム(リモート)にある場合、「履歴を書き換えました」という警告が表示されます。共有された履歴を編集するのは、他の人にとって再同期を強制するためです。可能な限り未プッシュのコミットのみを編集することをお勧めします。


共有履歴を書き換えた後の対応

すでに古いコミットを取得しているユーザーは、分岐した履歴を持つことになります。各ユーザーはローカルブランチを新しいリモート状態に合わせて再同期する必要があります:

git fetch origin
git reset --hard origin/<branch>   # ローカルで新規作成されたコミットを破棄(事前調整が必要)

書き換えの取り消し(復元)

  • アプリ内:
    バックアップパネルから、再構築前の先頭コミットをワンクリックで復元可能です。
  • CLI から:
    適用操作ごとに
    refs/knife-backup/
    にバックアップ参照が保存されます:
git for-each-ref refs/knife-backup      # バックアップ参照を探す
git reset --hard <backup-ref-or-hash>   # ブランチを元に戻す

注:

git reflog
にも旧先頭コミットがリストされます。すでに強制的なプッシュを行っても、ローカルで復元してから再度
git push --force-with-lease
で対応できます。


サインノートについて (透明性)

デフォルトでは、再構築された各コミットに対して小さな公開ノート(Sign Note)が添付されます。これは通常のノート参照とは独立しており、

git-knife
専用の参照を使用するため、あなたの通常のノートを汚しません。

ノートを確認する方法:

# ノートを読む
git notes --ref=git-knife show <commit>

# リポジトリが編集済みか確認
git for-each-ref refs/notes/git-knife
  • 通常の
    git log
    には表示されませんが、完全に検出可能で隠蔽されていません。
  • アプリ内の 🔪 サインノートチェックボックス でいつでもオフに切り替えることができます(設定は保持されます)。
  • リポジトリから完全に除去するには:
git update-ref -d refs/notes/git-knife

仕組みとアーキテクチャ

コアコンポーネント

  • src-tauri/src/git.rs

    Git を起動する唯一の場所。
  • commits.rs

    リポジトリを開き、NUL レコードセパレータを使ってコミットをリストアップ(
    open_repo
    ,
    list_commits
    )。
  • rewrite.rs
    • preview_edits
      apply_edits
      を処理。
    • git commit-tree
      を使用して、最初に変更されたコミットから先頭までのチェーンを再構築。
    • バックアップ参照を保存し、旧先頭での比較・交換(compare-and-swap)でブランチを移動。
  • backup.rs

    バックアップ参照
    refs/knife-backup/*
    のリスト表示と復元処理(
    git reset --hard
    )。

検証: 再構築戦略は

scratchpad/verify_engine.sh
で git レベルで検証されており、実際の
commit-tree
フローを再現してコンテンツ差分が空であることを断言しています。


セキュリティポリシー

すべての適用操作で、何も接触する前の旧先頭コミットへの参照

refs/knife-backup/<branch>/<epoch>
が作成されます。

  • 強制削除は行われません。
  • 復元はいつでもバックアップパネルから利用可能です。

同じ日のほかのニュース

一覧に戻る →

2026/08/12 4:35

Nvidia Nemotron 3.5 Lightning および NeMo Switchyard

## Japanese Translation: NVIDIA は、マルチエージェントシステム内の長期間にわたるエージェント型 AI ワークロードおよび専門的なタスク向けに設計された、300 億パラメータを持つ混合物専門家(MoE)オープンモデル「Nemotron 3.5 Lightning」を発表しました。本モデルは最先端レベルの精度を提供するとともに、出力速度が最大で 4 倍高速化し、エージェント型タスクの完了速度も約 30% 向上しています。これにより、大量の実装が可能になりつつ運用コストを削減できます。本モデルは、NVIDIA NeMo を用いて組織固有のデータを用いた後学習が可能であり、Nemotron Coalitions の貢献に基づいています。また、データのプライバシーと制御を維持するため、ローカル AI システム(NVIDIA RTX PC、DGX Spark、DGX Station、Jetson)、エッジデバイス、ワークステーション、データセンター、クラウド環境への展開をサポートしています。 効率を最大化するため、NVIDIA は開発者がアプリケーションを書き直す必要なく、品質、遅延、予算に基づいて自動的にリクエストを開封モデル、プロプライエタリモデル、または NVIDIA の混合モデルの最も適したものへ導くオープンソースのインテリジェントルーティングライブラリ「NeMo Switchyard」を発表しました。パートナー企業は既に Switchyard を統合し、精度を維持しつつコスト削減を実現しています。具体的な事例としては、Boomi(ドメインルーティング精度 100%)、Ramp(コスト削減 58%)、Classmethod(コスト削減 27%)、Cognition(Devin Desktop のコスト削減 28%)があり、Kong、LangChain、LiteLLM、Nous Research、Siemens による統合も進んでいます。 業界での採用は加速しており、組織はセキュリティ対策(CrowdStrike)、法務サービス、コードレビュー、ソフトウェア開発(Harvey との Trajectory、CodeRabbit との Baseten、Lila Sciences、Fastino Labs など)といったドメイン特化のエージェント型タスクに Nemotron 3.5 Lightning をカスタマイズしています。Nemotron 3.5 Lightning は Hugging Face、ModelScope、OpenRouter、build.nvidia.com(NVIDIA NIM マイクロサービスとして)、ならびに幅広い NVIDIA クラウドパートナーのエコシステムを通じて提供可能です。一方、NeMo Switchyard は GitHub で利用可能で、近々パートナープラットフォームにも展開されます。

2026/08/12 4:49

圧縮とは予測である

## Japanese Translation: ## 概要: Annie Sexton は ngrok で開発者教育担当として在籍し、Heroku、Render、Fly.io など PaaS 企業にて 10 年以上にわたって経験を持つ人物です。彼女は、「nerd-sniping」と呼ばれる遊び心のある用語で表される開発者への情熱——すなわち共有する技術的熱情を即座に惹きつけ、彼らを魅了する能力——によって際立っています。彼女の主な価値は、複雑なクラウドインフラストラクチャとそれを構築する人間クリエイターの間を取り持つことにあります。この深い歴史的文脈とエンジニアリングの craft に対する真摯な共感を活用することで、Annie は抽象的な技術概念をアクセスしやすく魅力的な学習体験へと転換させます。これにより開発者が支えられていると感じることが保証され、混同ではなくつながりを通じて革新が育まられるエコシステムが醸成されます。

2026/08/12 1:56

Mojo 1.0

## Japanese Translation: Mojo言語のバージョン1.0がリリースされ、2023年の初リリース以来確立された安定した、プロダクション対応の基盤へと、急激な実験段階からの移行を象徴しています。1.xシリーズではC++などの成熟した言語の標準に従い、破損を引き起こすシフトを避けるために追加的な変更を優先します。約20万人のコードラインと、ほぼ200人の貢献者から寄せられた1,100以上のプルリクエストを基盤としており、一貫性のある`var`を用いた変数宣言、統合されたクロージャ、単一のPointerType、そして正確な語彙再命名といった主要な簡素化がリリースに含まれています。新しい機能には、Python風のラムダ構文、参照無効化に対する改良されたメモリ安全性診断、より優れた`where`節、VS Code向けのより安定したLSPサーバーが含まれます。開発者は今や、信頼性の高い「1.0対応」のAIスキルを使用でき、`uv pip install --upgrade mojo`または`uv pip install max[all]`などのコマンドでインストールできます。MAXの強化(GLM-5.2およびNemotron-Hへのサポートなど)は`max["serve"]`を通じて利用可能で、skills.shを通じてオープンソースのエージェントスキル7,200以上がダウンロードされ、モデル全体のライフサイクル導入を加速しています。不安定なモジュール化パッケージはバージョン26.6で廃止予定となっており、長期的耐久性に向けた完全なアーキテクチャシフトを示しています。今後の投資には非同期プログラミングモデル、パターンマッチング、ユニオンが含まれ、また2026年までにMojoコンパイラとツールチェーンの段階的なオープンソース化も進められます。Mojo、MAX、オープンソースに関する詳細および計画については、8月18日にサンフランシスコで開催されるModConにて共有され、完全な変更ログの詳細はmojolang.orgおよびGitHubリポジトリで入手可能です。

Show HN: Git-knife –コミットメッセージや著者、日付をスプレッドシートのように編集するツールです | そっか~ニュース