Git Worktree 入门教程

Git Worktree 入门教程

日常开发中,我们经常遇到这样的场景:

你正在 dev 分支上开发一个新功能,代码写了一半,改动了很多文件,但是还没有 commit。突然,线上出现了一个 Bug,需要你立刻切换到 master 分支进行修复。

这时候,你通常有两个选择:

  1. 使用 git stash:把当前的修改“藏”起来,修完 Bug 再通过 git stash pop 恢复。但这容易导致冲突,而且如果储藏的栈太深,很容易忘记自己存了什么。
  2. 强制提交:把没写完的代码 commit 上去(比如写一个 WIP),等切回来再 reset。这会弄乱提交历史。

其实,Git 提供了一个更好的方案,叫做 git worktree

它允许你在同一个仓库中,同时打开多个“工作区”(Working Tree)。每个工作区对应不同的分支,互不干扰。你可以在一个文件夹里修 Bug,在另一个文件夹里继续开发新功能,不需要反复切换分支,也不需要重新 git clone

一、 快速上手

假设你的项目目录是 app-main,当前位于 dev 分支。

1. 查看当前状态

首先,看一眼现有的工作区。

$ git worktree list

/path/to/app-main  (HEAD detached at dev)

目前只有一个,就是你当前所在的主目录。

2. 创建新工作区

现在,我们需要修一个紧急 Bug。我们不希望干扰当前的 app-main 目录。

我们可以基于 master 分支,创建一个名为 app-hotfix 的新目录(通常建议建在项目目录的同级,以免混乱)。

# 语法:git worktree add <新路径> <基于的分支>
$ git worktree add ../app-hotfix master

Preparing worktree (checking out 'master')
HEAD is now at 7f3b1d2 Initial commit

这时候,你的文件系统中会出现一个新文件夹 ../app-hotfix

3. 并行开发

现在,你可以同时操作这两个目录了。

  • 终端 A 停留在 app-main,继续你的 dev 开发。
  • 终端 B 进入 app-hotfix,修复 Bug。
$ cd ../app-hotfix
$ git status
On branch master
nothing to commit, working tree clean

你会发现,这里是一个干净的 master 分支环境,完全没有 dev 分支那些未提交的杂乱文件。即使是 node_modules(如果 .gitignore 忽略了它)通常也需要重新安装,或者通过软链接共享,这保证了环境的隔离性。

4. 清理工作区

Bug 修复完,代码推送到远程后,这个临时工作区就不需要了。

注意:不要直接手动删除文件夹,最好使用 Git 命令移除,以保持元数据清洁。

# 先切回主目录或任意非目标目录
$ cd ../app-main

# 移除工作区
$ git worktree remove ../app-hotfix

再次查看列表,就只剩下主目录了。

$ git worktree list
/path/to/app-main  (HEAD detached at dev)

二、 常用命令清单

git worktree 的命令不多,记住下面这几个就足够应对日常需求了。

命令 说明 示例
git worktree list 列出所有工作区 $ git worktree list
git worktree add <path> <branch> 创建新工作区并切到指定分支 $ git worktree add ../hotfix master
git worktree add -b <new-br> <path> <base> 基于某分支新建分支并创建工作区 $ git worktree add -b feature-x ../feature master
git worktree remove <path> 删除指定工作区 $ git worktree remove ../hotfix
git worktree prune 清理已手动删除文件夹的陈旧记录 $ git worktree prune

三、 几点注意

  1. 不要同时检出同一个分支:Git 默认不允许两个 worktree 同时位于同一个分支(比如两个目录都切到 dev),因为这会导致索引(index)冲突。
  2. 存储空间:虽然 worktree 共享 .git 目录(版本历史),但每个工作区都有一份独立的代码副本。如果项目非常大,会占用额外的磁盘空间。
  3. 依赖管理:对于前端项目,新工作区通常需要重新 npm install

四、 参考链接

(完)

posted @ 2026-02-08 16:07  thxis0  阅读(5)  评论(0)    收藏  举报