我今天看 Claude Code 的 branch 机制时,最容易被误解的一点不是 Git,而是 session。很多人会下意识把 Claude Code 的一次对话理解成某个分支上的聊天记录,仿佛切到feature-login,这段对话就属于feature-login,切到bugfix-payment,又会天然换成另一段记忆。实际运行起来不是这样。Claude Code 的对话是一个绑定到当前目录的 session,而不是一个绑定到 Git branch 的 session。官方文档对这件事说得很直接,Claude Code conversation 是 tied to current directory,/resume默认展示当前 worktree 的 session,而 Claude 看到的是当前 branch 的文件,切换 branch 后,Claude 看到新 branch 的文件,但 conversation history 仍然保留。(Claude)
这个设计看起来有点绕,其实很符合工程现场的真实工作方式。我们在一个仓库里改代码,脑子里同时存在两套东西,一套是磁盘上的文件状态,一套是刚才讨论过的任务上下文。Git branch 决定磁盘上的文件长什么样,Claude Code session 决定 Claude 还记得我们刚才聊过什么。把这两套东西分开之后,Claude