git-wt CLI の Neovim ラッパープラグインです。独自の worktree ロジックは持たず、すべての操作を git-wt に委譲し、その上に Neovim ネイティブなインターフェースを提供します。
Telescope ピッカー(または vim.ui.select)から worktree を切り替えると、Neovim の作業ディレクトリが自動的に変更され、neo-tree や lualine などのプラグインも連動します。
- Neovim >= 0.10
- git-wt CLI
- telescope.nvim(任意。なければ
vim.ui.selectにフォールバック)
{
"WataruNishimura/git-wt.nvim",
dependencies = { "nvim-telescope/telescope.nvim" }, -- なくても動作します
config = function()
require("git-wt").setup()
end,
}use {
"WataruNishimura/git-wt.nvim",
config = function()
require("git-wt").setup()
end,
}| コマンド | 説明 |
|---|---|
:GitWt |
ピッカーを開いて worktree を選択・切り替え |
:GitWt <branch> [start-point] |
worktree に切り替え(なければ作成) |
:GitWt list |
worktree の一覧を表示 |
:GitWt delete <branch> [--force] |
worktree を削除 |
:GitWt status |
現在の worktree 情報を表示 |
git-wt CLI と同様に、:GitWt <branch> で切り替えと作成を一つのコマンドで処理します。
サブコマンドとブランチ名はタブ補完に対応しています。
Telescope がインストールされている場合、:GitWt で Telescope ピッカーが開きます。
| キー | 操作 |
|---|---|
<CR> |
選択した worktree に切り替え |
<C-d> |
選択した worktree を削除(確認あり) |
Telescope がない場合は vim.ui.select が使われます。
require("git-wt").setup({
-- git-wt バイナリのパス(デフォルト: "git-wt")
bin = "git-wt",
-- 切り替え時に通知を表示(デフォルト: true)
notify = true,
-- ディレクトリ変更後に実行する関数(デフォルト: {})
hooks = {
-- 例: 切り替え後に neo-tree をリフレッシュ
-- function(dir)
-- vim.cmd("Neotree dir=" .. dir)
-- end,
},
-- 組み込み連携機能(デフォルト: すべて有効)
integrations = {
-- ワークツリー切り替え時に claudecode.nvim のセッションを再起動(デフォルト: true)
claudecode = true,
-- 開いているターミナルバッファに `cd <dir>` を送信(デフォルト: true)
terminal_cd = true,
},
})claudecode.nvim がインストールされていてサーバーが起動中の場合、ワークツリー切り替え後に Claude Code セッションを自動的に再起動し、新しい作業ディレクトリを反映します。
claudecode.nvim がインストールされていない場合、この連携はスキップされます。
ワークツリー切り替え後、開いているすべての Neovim ターミナルバッファ(:terminal)に cd <dir> を送信し、シェルセッションのディレクトリも新しいワークツリーに同期します。
git-wt --json --nocdで worktree 一覧を JSON として取得- 切り替え時に
vim.cmd("cd ...")でグローバルな作業ディレクトリを変更 - Neovim の
DirChangedautocmd が発火 DirChangedを監視しているプラグイン(neo-tree、lualine など)が自動的に更新
カスタムキーマップやワークフロー用に Lua API を直接使うこともできます。
local git_wt = require("git-wt")
-- worktree の一覧を取得
git_wt.list(function(worktrees)
-- worktrees: { { path, branch, head, bare, current }, ... }
end)
-- worktree に切り替え(なければ作成)
git_wt.checkout("feature-branch")
git_wt.checkout("feature-branch", "origin/main", function(path)
-- 失敗時は path が nil
end)
-- worktree を削除
git_wt.delete("feature-branch", false, function(ok) end) -- 安全な削除
git_wt.delete("feature-branch", true, function(ok) end) -- 強制削除このプラグインは @k1LoW 氏の git-wt をベースにしています。シンプルかつ強力な Git worktree 管理 CLI を作ってくださったことに感謝します。
MIT