はじめに
VSCode で git worktree を使っていて、こんな経験はないでしょうか。
- worktree 側のファイルを編集したのに、ソース管理タブに差分が出てこない
- さっきまで普通に見えていた diff が、ある瞬間から急に表示されなくなった
- 設定をいじった覚えはない、はず
私も先日、まさにこの状況に遭遇しました。同様の症状で困っている方がもしいれば、この記事が少しでも役に立てばと思います。
起きたこと
普段、私は git worktree でブランチを切り替えずに複数の作業を並行させています。メインの repo はそのままに、../my-project-feature-a のような形で別ディレクトリを切って、VSCode でそれぞれ開く運用です。worktree は一度慣れると、ブランチ切り替えのストレスがほぼゼロになるので、個人的にはこれが一番好きな git の使い方です。
ある日、いつものように worktree 側の VSCode でファイルを編集したのですが、ソース管理タブに差分が出てきません。ターミナルで git status を叩くと、ちゃんと変更は認識されている。でも VSCode の UI からは何も見えない。
# ターミナルでは変更がちゃんと見える
$ git status
On branch feature-a
Changes not staged for commit:
modified: src/foo.ts
「壊れた…?」と一瞬焦りました。拡張機能を疑ったり、VSCode を再起動したり、遠回りをしてしまいました。
結論
VSCode の設定 git.detectWorktrees が false になっていたのが原因。true に戻すだけで解決しました。
身に覚えはないのですが、自分でこのチェックを外したのでしょうか…? アップデートか拡張機能の影響か、はたまた深夜に設定画面でうっかり触ったのか、原因はいまだに分かりません。
直し方
設定画面(Cmd + ,)を開いて git.detectWorktrees で検索、チェックを入れる(= true にする)だけです。
settings.json に直接書くならこちら。
{
"git.detectWorktrees": true
}
設定を反映した瞬間、ソース管理タブに差分が戻ってきました。
まとめ
- VSCode で worktree の差分が急に表示されなくなったら、まず
git.detectWorktreesを確認 -
settings.jsonに"git.detectWorktrees": trueを入れれば即解決
