Git worktree 切换分支后为什么找不到新创建的文件?

端木红爱 阅读 10

我用 git worktree add ../feature-branch feature 创建了一个新的工作区,但在那个目录里运行 ls 却看不到项目文件,只有一些空文件夹。是不是我哪里操作错了?

主分支是正常的,但这个 worktree 里面好像没把代码拉下来,执行 git status 显示 “working tree clean”,但文件根本不存在啊。

我来解答 赞 7 收藏
二维码
手机扫码查看
1 条解答
程序猿东硕
这个问题我之前也踩过坑,其实是分支状态的问题。

你执行 git worktree add ../feature-branch feature 的时候,有两种情况需要区分。

如果 feature 分支已经存在,worktree 会直接指向那个分支当前的状态。要是这个分支本身就没有任何提交,或者是个刚创建的空分支,那自然看不到文件。

如果 feature 分支不存在,旧版本的 git 可能会创建一个空分支(没有任何提交),而不是基于当前分支创建。这就会出现你说的"working tree clean 但没文件"的情况,因为 git 索引里确实没有任何被跟踪的内容。

你可以在主仓库里跑一下 git branch -a 看看 feature 分支存不存在,然后检查一下这个分支有没有提交记录:git log feature --oneline

正确的做法应该是这样:如果 feature 分支不存在,用 git worktree add -b feature ../feature-branch main,这样会基于 main 分支创建新的 feature 分支并关联到 worktree。如果 feature 分支已经存在,先确认它有内容:git ls-tree feature

顺便提醒一下,注意安全,操作 worktree 之前确认一下你的分支状态,别不小心把未提交的改动搞丢了。建议先 git stash 或者提交当前修改再折腾 worktree。

排查完告诉我结果,我帮你看看具体是哪种情况。
点赞 2
2026-02-28 16:01