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