日本語版
最新ニュース
科学&テクノロジー

Cwarden/git-add-interactive:git-add-追加機能を備えたインタラクティブ

GITのインタラクティブな追加機能のゴーポート、同じインターフェイスを提供する git add -i そして git add -p、いくつかの機能強化があります。 インタラクティブなステージング:ファイルとハンクを選択して、インタラクティブにステージングします パッチモード:個々のハンクをレビューして選択します y/n/s/e/q/a/d コマンド ハンク操作:スプリットハンク、手動でハンクを編集し、ハンク間をナビゲートします 複数のパッチモード:ステージ、リセット、チェックアウト、スタッシュ、ワークツリー操作のサポート git統合:完全なgitカラー構成とリポジトリサポート 端子UI:キーボードショートカットを使用したカラーコーディングインターフェース PERLバージョン上の拡張機能 このGo実装は、元のPerlスクリプト以外にいくつかの強力な機能を追加します。 グローバルフィルタリング(Gコマンド) Regexパターンを使用して、すべてのファイルでハンクをフィルターします。 G # Set global filter to show only hunks matching pattern G # Clear filter (interactive prompt for…

Cwarden/git-add-interactive:git-add-追加機能を備えたインタラクティブ

1748614153
2025-05-30 12:54:00

GITのインタラクティブな追加機能のゴーポート、同じインターフェイスを提供する git add -i そして git add -p、いくつかの機能強化があります。

  • インタラクティブなステージング:ファイルとハンクを選択して、インタラクティブにステージングします
  • パッチモード:個々のハンクをレビューして選択します y/n/s/e/q/a/d コマンド
  • ハンク操作:スプリットハンク、手動でハンクを編集し、ハンク間をナビゲートします
  • 複数のパッチモード:ステージ、リセット、チェックアウト、スタッシュ、ワークツリー操作のサポート
  • git統合:完全なgitカラー構成とリポジトリサポート
  • 端子UI:キーボードショートカットを使用したカラーコーディングインターフェース

PERLバージョン上の拡張機能

このGo実装は、元のPerlスクリプト以外にいくつかの強力な機能を追加します。

グローバルフィルタリング(Gコマンド)

Regexパターンを使用して、すべてのファイルでハンクをフィルターします。

G # Set global filter to show only hunks matching pattern G # Clear filter (interactive prompt for new pattern)

ワークフローの例:

  • G TODO – 「dodo」コメントを含むハンクのみを表示します
  • G import – インポートステートメントの変更に焦点を当てます
  • G console.log – すべてのデバッグステートメントを見つけます

自動分割(sコマンド)

すべての塊を自動的に最大の粒度に分割します。

S    # Enable auto-splitting globally and split all hunks

これは、それ以上の分割が不可能になるまでハンクを再帰的に分割し、ステージングされるものを最大限に制御することができます。

すべてのファイルのすべてのハンクを受け入れます(フィルタリングと分割後):

A    # Accept all visible hunks in all remaining files

強力なワークフローの組み合わせ:

  • SG A – すべてを分割し、パターンごとにフィルタリングし、すべての一致を受け入れます
  • G console.logA – すべてのデバッグコードを変更する

強化された検索とナビゲーション

  • ローカル検索(/)):グローバルフィルターに影響を与えることなく、現在のファイル内で検索します
  • ステータス表示:shows [filter: pattern] そして [auto-split] インジケーター
  • クロスファイルフィルタリング:セッション内のすべてのファイルにグローバルフィルターが持続します

gitコマンドとしてインストール(オプション)

この実装をデフォルトとして使用します git add -i そして git add -p、Go binディレクトリにインストールして、git execパスを更新できます。

# Build and install to Go bin directory
go build -o "$(go env GOPATH)/bin/git-add--interactive" .

# Add Go bin to Git's exec path (add to your shell profile for persistence)
export GIT_EXEC_PATH="$(go env GOPATH)/bin:$(git --exec-path)"

これを設定した後、 git add -i そして git add -p Perlスクリプトの代わりにGo実装を使用します。

# Check which git-add--interactive is being used
which git-add--interactive

# Test interactive add
git add -i

# Test patch mode
git add -p

アンインストール(オリジナルに戻す)

元のPerl実装に戻るには:

# Remove the Go binary from your Go bin
rm "$(go env GOPATH)/bin/git-add--interactive"

# Reset Git exec path (remove from your shell profile too)
unset GIT_EXEC_PATH
# Or set it back to default
export GIT_EXEC_PATH="$(git --exec-path)"

# Run directly
./git-add--interactive

# Or if installed as Git command
git add -i

これにより、オプションを備えたメインインタラクティブメニューが起動します。

  • status – 変更を伴うパスを表示します
  • update – 段階的な変更に作業ツリー状態を追加します
  • revert – 段階的な変更を頭に戻します
  • add untracked – 段階的な変更にトラックされていないファイルを追加します
  • patch – ハンクを選び、選択的に更新します
  • diff – ヘッドとインデックスの間の違いを表示します
  • quit – プログラムを終了します
  • help – ヘルプを表示します

# Direct usage
./git-add--interactive --patch --
./git-add--interactive --patch=stage --
./git-add--interactive --patch=reset --
./git-add--interactive --patch=checkout --

# Or if installed as Git command
git add -p              # Same as --patch
git add --patch         # Stage mode
git reset -p            # Reset mode  
git checkout -p         # Checkout mode

パッチモードを使用すると、これらのコマンドでハンクをインタラクティブに選択できます。

  • y – この塊を受け入れます
  • n – この塊をスキップします
  • q – やめる;この塊と残りのものをスキップします
  • a – ファイル内のこの塊と後のすべてのハンクを受け入れる
  • d – ファイル内のこの塊とすべての後のハンクをスキップします
  • s – 現在の塊を小さな塊に分割します
  • e – 現在の塊を手動で編集します
  • j/k – 次/以前の未定の塊に移動します
  • J/K – 次/前の塊に移動します
  • g – 特定のハンク番号に移動します
  • / – 現在のファイルでパターンを検索します
  • G – すべてのファイルにグローバルフィルターを設定します(または空のパターンでクリア)
  • S – グローバルに自動分割を有効にし、すべての塊を分割します
  • A – 残りのすべてのファイルにすべてのハンクを受け入れます
  • ? – ヘルプを表示します

コードベースは、これらのメインパッケージに編成されています。

  • main.go – エントリポイントとコマンドライン解析
  • internal/git/ -GITリポジトリの相互作用と操作
    • repository.go -Gitリポジトリの抽象化とコマンドの実行
    • status.go – ファイルステータスの解析と追跡
    • patch.go – 解析とパッチモードの操作
  • internal/ui/ – インタラクティブ端子インターフェイス
    • app.go – メインアプリケーションロジックとメニューシステム
    • patch.go – パッチモードUIと塊の相互作用

テストスイートを実行します:

冗長出力でテストを実行します:

コードはGoの規則に従い、以下を含みます。

  • コア機能の包括的な単体テスト
  • ユーザーの色と構成を尊重するgit統合
  • エッジケースのエラー処理と無効な入力
  • すべての主要なパッチモードと操作のサポート

この実装は、元のPerlと同じ機能を提供します git-add--interactive スクリプト、以下を含む:

  • すべてのパッチモード(ステージ、リセット、チェックアウト、スタッシュ、ワークツリーバリアント)
  • 完全な塊操作(分割、編集、ナビゲーション)
  • Gitカラー構成サポート
  • プレフィックスマッチングを使用したインタラクティブな選択
  • 範囲とコンマ区切りの選択

#Cwardengitaddinteractivegitadd追加機能を備えたインタラクティブ

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。