惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
博客园_首页
S
SegmentFault 最新的问题
罗磊的独立博客
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
D
Docker
雷峰网
雷峰网
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
V
V2EX
大猫的无限游戏
大猫的无限游戏
V
Visual Studio Blog
腾讯CDC
宝玉的分享
宝玉的分享
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理
T
Tailwind CSS Blog
Vercel News
Vercel News
H
Help Net Security
博客园 - Franky
D
DataBreaches.Net
aimingoo的专栏
aimingoo的专栏

博客园 - Lemo_wd

flutter —— iOS 的构建与分发 flutter —— 理解 iOS 的依赖管理 wireguard 入门 k3s 基础 —— 将 traefik 替换为 ingress-nginx Pr 入门 为什么 TCP 是3次握手4次挥手? 给 ssh 私钥文件配置统一口令 滚动部署零碎笔记1 Clickhouse 物化视图与投影 Clickhouse 主键索引 Clickhouse 核心概念 ClickHouse 案例学习 —— 使用 ClickHouse 探索 GitHub 统计信息 linux Tun/Tap 虚拟网卡 Clickhouse 的 kafka Engine 集成 Clickhouse 表引擎 —— MergeTree 局域网中的设备间的流量转发 d3.js 构建股权架构图并绘制双向节点树 final cut pro 入门 d3.js 构建股权架构图并绘制股权百分比 flutter 的滚动控制 —— 滚动类组件的内部与整体滚动
git worktree 的入门
Lemo_wd · 2026-08-22 · via 博客园 - Lemo_wd

概念:关联工作树

  1. 主工作树:拥有完整的 .git/ 文件夹,里面存着整个项目的所有 commit 历史、分支引用、配置信息、缓存对象等。

  2. 关联工作树:里面只有一个纯文本文件 .git(可以用 cat .git 查看),里面只写了一行路径。

gitdir: /Users/dev/my-project/.git/worktrees/feat-payment

关联工作树开发完随时可以用 git worktree remove 移除,删了对项目历史没有任何破坏。

点击查看图片

download

使用场景

场景1:当前分支还在更新,此时需要切到另一个分支执行某个紧急修复。

传统解法:
直接将当前更新内容提交一个新记录,或者 git stash。再 git switch 到该分支进行修复。

新解法:
基于该分支(需要紧急修复的分支)创建一个关联工作树,保存到某个子目录中,进入到该子目录进行修改或提交代码。解决完成后可以直接删除该子目录。

创建关联工作树

1. 基于已有分支创建工作树

git worktree add <路径> <已有分支>

2.基于已有 commit hash(或分支)创建新分支工作树

git worktree add -b <新分支> <路径> <Commit/Tag/分支>

① 新建工作树必须要绑定分支,除非创建游离工作树(相当于直接拷贝目录,不能执行 pull merge 等操作)

② 一个分支最多只能挂载一个关联工作树。

# 举例1:先创建关联工作树,再回到主工作树切换到同一个分支,报错

# 先开了一个新目录绑定了 b1
git worktree add ../dir-b1 b1

# 在原来的主目录里执行 git switch
git switch b1

fatal: 'feat-login' is already checked out at '/path/to/dir-login'

# 举例2: 当前已经是分支b1,再基于b1创建关联工作树,报错
git worktree add ../dir-b1 b1

3. 基于已有 commit hash(或分支)创建游离工作树

git worktree add -d <路径> <Commit/Tag/分支>