git worktree
git worktree
是 Git 提供的一个非常实用的功能,它允许你在同一个仓库中创建多个工作副本(工作树),每个副本可以检出不同的分支,而不会相互干扰。
✅ 使用场景
- 你需要同时开发多个功能分支,但不想频繁切换分支。
- 你在主分支工作的同时,还需要在旧版本上打补丁。
- 用于自动化构建或测试多个版本。
🧩 基本概念
Git 仓库由两部分组成:
.git
(仓库对象和配置)- 工作目录(你操作的文件)
通常,一个 Git 仓库对应一个工作目录。但 git worktree
允许你将多个工作目录挂在同一个 .git
仓库下,这些目录共享 .git
数据,但彼此独立。
🛠️ 常用命令
✅ 添加一个新的工作树
1 | git worktree add ../my-feature-branch feature-branch |
在仓库外创建一个目录
../my-feature-branch
,并在其中检出feature-branch
分支。
如果分支还不存在,可以直接创建:
1 | git worktree add -b feature-branch ../my-feature-branch origin/main |
✅ 查看当前所有工作树
1 | git worktree list |
示例输出:
1 | /project/main abcd123 [main] |
✅ 移除工作树(不删除分支)
1 | git worktree remove ../my-feature-branch |
✅ 删除已失效的工作树(如果目录手动被删了)
1 | git worktree prune |
⚠️ 注意事项
- 同一个分支不能同时被多个 worktree 使用。
git worktree
使用的是主仓库的.git
目录,共享 commit 历史,节省空间。- 每个 worktree 会在
.git/worktrees/
下注册自己的元数据。
🧪 示例操作流程
1 | git clone git@github.com:your/project.git |
如你有具体需求(例如工作在多个版本上打补丁),我可以给出更针对性的建议或脚本。是否需要示例工作流?