2025-06-24

git worktreeをフラットに管理したい

Git

作成した worktree のディレクトリが clone したリポジトリのファイル群に埋もれてしまう問題への対応

Git の作業ディレクトリがリポジトリのファイルに埋もれてしまうと見通しが悪くなるため、ディレクトリ構成をフラットに保ちたい。
そのため、bareリポジトリと worktree を組み合わせた構成で管理しています。

# 作業ディレクトリ作成・移動
mkdir til && cd $_

# bareリポジトリとしてクローン
git clone --bare git@github.com:kmkkiii/til.git .til.git

# baseブランチ(main) の worktree 作成
git --git-dir=.til.git worktree add main main

# ブランチを作成し、それぞれの worktree を追加
git --git-dir=.til.git worktree add feature-foo -b feat/foo main
git --git-dir=.til.git worktree add feature-bar -b feat/bar main

worktreeごとのディレクトリが同じ階層にできて見やすくなりました。

git worktree list
/Users/kmkkiii/Development/til/.til.git     (bare)
/Users/kmkkiii/Development/til/feature-foo  6126118 [feature/foo]
/Users/kmkkiii/Development/til/feature-bar  6126118 [feature/bar]
/Users/kmkkiii/Development/til/main         6126118 [main]

❯ tree -d -L 3
.
├── .til.git
│   ├── hooks
│   ├── info
│   ├── logs
│   │   └── refs
│   ├── objects
│   ├── refs
│   │   ├── heads
│   │   └── tags
│   └── worktrees
│       ├── feature-foo
│       ├── feature-bar
│       └── main
├── feature-foo
├── feature-bar
└── main