gw

command module
v0.3.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 11, 2025 License: MIT Imports: 1 Imported by: 0

README

gw - Git Worktree Wrapper

Git worktree をシンプルに管理するための CLI ツール。

特徴

  • 📁 直感的なワークツリー作成(gw add feature/hoge../repo-feature-hoge/
  • 🔀 ブランチ名、サフィックス、ディレクトリ名の柔軟な指定
  • 🐙 GitHub PR からのワークツリー作成
  • 🔍 fzf によるインタラクティブなワークツリー選択
  • 🚀 シェル統合によるスムーズなディレクトリ移動

インストール

Homebrew (macOS/Linux)
brew install t98o84/tap/gw
Go
go install github.com/t98o84/gw@latest
バイナリ

Releases からダウンロード。

ソースからビルド
# リポジトリをクローン
git clone https://github.com/t98o84/gw.git
cd gw

# Docker でビルド (macOS Apple Silicon)
docker compose run --rm dev sh -c "CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o gw ."

# Docker でビルド (macOS Intel)
docker compose run --rm dev sh -c "CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o gw ."

# Docker でビルド (Linux)
docker compose run --rm dev go build -o gw .

# パスの通った場所にコピー
sudo cp gw /usr/local/bin/
# または
mkdir -p ~/.local/bin && cp gw ~/.local/bin/

ローカルに Go がインストールされている場合:

go install github.com/t98o84/gw@latest

シェル統合のセットアップ

gw sw でディレクトリ移動するために、シェル設定に以下を追加してください:

Bash
# ~/.bashrc に追加
eval "$(gw init bash)"
Zsh
# ~/.zshrc に追加
eval "$(gw init zsh)"
Fish
# ~/.config/fish/config.fish に追加
gw init fish | source

使い方

設定ファイル

gw は YAML 形式の設定ファイルをサポートしています。設定ファイルのパスは以下の通りです:

  • Linux/macOS: ~/.config/gw/config.yaml (または $XDG_CONFIG_HOME/gw/config.yaml)
  • Windows: %APPDATA%\gw\config.yaml
設定例
add:
  open: true  # ワークツリー作成後に自動的にエディターで開く
editor: code  # 使用するエディターコマンド
設定項目
  • add.open (boolean): ワークツリー作成後に自動的にエディターで開くかどうか(デフォルト: false
  • editor (string): 使用するエディターコマンド(例: code, vim, emacs

注意: コマンドラインフラグは設定ファイルの値より優先されます。

ワークツリーの作成
# 既存ブランチのワークツリーを作成
gw add feature/hoge
# => ../ex-repo-feature-hoge/ が作成される

# 新規ブランチを作成してワークツリーを作成
gw add -b feature/new

# PR のブランチからワークツリーを作成
gw add --pr 123
gw add -p 123
gw add --pr https://github.com/owner/repo/pull/123
gw add -p https://github.com/owner/repo/pull/123

# ワークツリー作成後にエディターで開く(コマンドラインフラグ)
gw add --open --editor code feature/hoge
gw add --open -e vim feature/hoge

# 設定ファイルで add.open=true と editor=code を設定している場合
# フラグなしでもエディターが自動的に開く
gw add feature/hoge

# オプションの組み合わせも可能
gw add -b --open --editor code feature/new
gw add --pr 123 --open -e vim
ワークツリー一覧
gw ls
# ex-repo (main)
# ex-repo-feature-hoge
# ex-repo-fix-foo
ワークツリーの削除
# 以下はすべて同じワークツリーを指定
gw rm feature/hoge
gw rm feature-hoge
gw rm ex-repo-feature-hoge
ワークツリーでコマンド実行
gw exec feature/hoge git status
gw exec feature-hoge npm install
ワークツリーへ移動
# 指定したワークツリーに移動
gw sw feature/hoge

# fzf でインタラクティブに選択
gw sw

コマンド一覧

コマンド エイリアス 説明
gw add <branch> gw a ワークツリー作成
gw add -b <branch> gw a -b 新規ブランチ + ワークツリー作成
gw add --pr <url|number> gw a --pr, gw a -p PR ブランチのワークツリー作成
gw add --open gw a --open ワークツリー作成後にエディターで開く
gw add --editor <cmd> gw a -e 使用するエディターコマンドを指定
gw ls gw l ワークツリー一覧表示
gw rm <name> gw r ワークツリー削除
gw exec <name> <cmd...> gw e 対象ワークツリーでコマンド実行
gw sw [name] gw s 対象ワークツリーに移動(引数なしで fzf)
gw fd gw f fzf でワークツリー検索
gw init <shell> gw i シェル初期化スクリプト出力

必要なツール

  • git
  • fzf (オプション: インタラクティブ選択用)
  • gh または GITHUB_TOKEN 環境変数 (オプション: PR 連携用)

ライセンス

MIT

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
fzf
git

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL