当前位置:首页 > 文章列表 > 文章 > 软件教程 > Git 怎样用 worktree 分离并行功能分支

Git 怎样用 worktree 分离并行功能分支

来源:17golang原创 2026-11-07 22:29:59 0浏览 收藏

当一个功能还没有做完,却临时需要修复线上分支时,反复 stash、切换分支和恢复现场很容易出错。Git worktree 可以让同一个仓库同时拥有多个工作目录,每个目录绑定一个分支,适合并行开发、紧急修复和短期验证。

官方地址:https://git-scm.com/docs/git-worktree

下面用一个主目录、一个搜索功能目录和一个热修复目录说明完整操作。界面图片是配合步骤制作的原创操作示意图,不是 Git 客户端或终端截图。

先理解 worktree 的目录关系

一个普通仓库有一个 main worktree,还可以挂接多个 linked worktree。它们共享对象库和提交历史,但各自拥有独立的工作目录、HEAD 和 index。因此,主目录正在修改文件时,另一个 worktree 仍然可以检出不同分支。

建议把并行目录放在主仓库的同级目录,名称直接体现分支用途,例如 ../demo-search。这样删除或移动目录时不容易误伤主仓库。

创建一个独立的功能目录

如果目标分支已经存在,可以直接指定分支名;如果分支还不存在,则使用 -b 创建它:

# 在当前仓库旁边创建目录,并新建 feature/search 分支
git worktree add -b feature/search ../demo-search

# 如果分支已经存在,直接把它检出到新目录
git worktree add ../demo-hotfix hotfix/login

第一条命令执行后,../demo-search 就是独立工作区。进入该目录后,提交、拉取和推送仍然使用普通 Git 命令:

# 进入功能 worktree,确认当前分支后再开始修改
cd ../demo-search
git branch --show-current

# 将功能改动提交到它自己的分支
git add .
git commit -m "实现搜索结果分页"
git push -u origin feature/search
Git worktree 创建功能分支和独立目录的原创界面说明图
图1:操作示意图,创建 linked worktree 后,目录、分支和成功状态对应显示。

用 list 检查所有并行工作区

不要只凭目录名判断当前状态,统一用 git worktree list 查看 Git 记录的路径、提交和分支:

# 查看主 worktree 和所有 linked worktree
git worktree list

# 用机器更容易读取的格式查看详细状态
git worktree list --porcelain

重点看三项:路径是否指向预期目录、分支是否正确、是否出现 prunable。如果目录被手动删除,Git 可能暂时保留关联记录,这时不要马上重新用同名路径创建。

并行开发时要注意的边界

  • 同一个分支默认不能同时被两个 worktree 检出。看到 branch is already checked out 时,应先使用现有目录,或创建一个新的分支。
  • 各 worktree 的未提交文件彼此独立,但共享提交历史;合并、变基和冲突处理仍然要回到具体分支完成。
  • 脚本中的相对路径以当前 worktree 为基准。项目工具若依赖固定的上级目录,创建前先确认路径约定。
  • 临时实验可以使用 detached HEAD,但它不适合作为长期功能分支,重要提交应及时创建或关联分支。

完成后安全移除 worktree

功能分支合并后,先确认目录没有需要保留的未提交文件,再从主仓库执行移除:

# 先列出 worktree,确认要删除的路径和分支
git worktree list

# 只移除已经干净的 linked worktree
git worktree remove ../demo-search

# 处理被手动删除后留下的过期管理记录
git worktree prune

如果目录仍有修改,Git 默认会拒绝删除,这是保护措施。需要保留改动时先提交或复制;只有确定内容不再需要时,才考虑带 --force 的移除。

Git worktree list 检查干净状态并移除功能目录的原创界面说明图
图2:结果示意图,核对分支、路径和 clean 状态后再执行移除。

常见问题怎么处理

为什么新 worktree 不能使用已有分支?因为该分支已经被另一个 worktree 检出。先运行 git worktree list 找到它,完成旧目录的工作后再移除,或者基于目标提交创建新分支。

目录删掉了,list 里还存在怎么办?回到主 worktree 执行 git worktree prune,清理已经不存在的目录记录。若只是目录移动了,优先使用 git worktree move 或 git worktree repair,不要反复删除内部记录。

什么时候不适合使用 worktree?如果项目很小、没有并行任务,普通分支切换更简单;如果构建目录、依赖缓存或本地配置必须全局共享,也要先确认多个目录不会互相覆盖。

速查表

任务命令注意点
新建分支和目录git worktree add -b 分支 路径路径最好与主仓库同级
查看全部目录git worktree list确认分支和 prunable 状态
移除干净目录git worktree remove 路径脏工作区默认会被拒绝
清理遗留记录git worktree prune只处理已不存在的目录记录

把 worktree 当成“一个仓库、多份独立工作现场”即可。创建时明确目录和分支,使用中用 list 追踪,结束时先确认干净再 remove,就能把并行功能开发和紧急修复分开管理。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Docker Desktop 怎样暂停并恢复容器Docker Desktop 怎样暂停并恢复容器
上一篇
Docker Desktop 怎样暂停并恢复容器
Postman 怎样为不同环境设置请求变量优先级
下一篇
Postman 怎样为不同环境设置请求变量优先级
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    931次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    937次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    1042次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    1016次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    844次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码