当前位置: 首页 > news >正文

git worktree

文章目录

  • 1.简介
  • 2.格式
  • 3.常用选项
  • 4.示例
    • 4.1 为现有分支创建 worktree
    • 4.2 创建新分支并同时创建 worktree
    • 4.3 查看所有 worktree
    • 4.4 移除不再需要的 worktree
    • 4.5 锁定 worktree(防止在 `prune` 时被清除)
    • 4.6 清理已删除的 worktree 引用
  • 5.小结
  • 参考文献

1.简介

git worktree是 Git 提供的多工作区管理命令,允许你一个仓库拥有多个并存的、相互独立的工作目录,每个工作区可以检出不同的分支。

这些目录共享同一个 Git 仓库(即共享.git目录),因此你可以在不影响主工作区的情况下,并行处理多个分支的任务。

2.格式

gitworktreeadd[-f][--detach][--checkout][--lock[--reason<string>]][--orphan][(-b|-B)<new-branch>]<path>[<commit-ish>]gitworktree list[-v|--porcelain[-z]]gitworktree lock[--reason<string>]<worktree>gitworktree move<worktree><new-path>gitworktree prune[-n][-v][--expire<expire>]gitworktree remove[-f]<worktree>gitworktree repair[<path>…​]gitworktree unlock<worktree>

3.常用选项

选项说明
add在指定路径创建一个新的 worktree,并基于指定分支检出代码。
-b <新分支>结合add使用,创建并检出新的分支作为 worktree。
-B <新分支>类似-b,但会强制重置已存在的分支。
--detach让 worktree 处于“分离头指针”状态,不关联任何分支。
list列出当前所有 worktree 及其路径、分支、提交信息。
--porcelain以脚本可读的格式输出list信息,适合编程解析。
remove删除指定的 worktree(同时删除对应的目录)。
prune清理已被删除但仍残留记录的 worktree 引用。
lock/unlock锁定或解锁 worktree,防止被误删除或prune
move将 worktree 移动到新目录。
repair修复 worktree 的元数据,例如迁移仓库路径后。

4.示例

4.1 为现有分支创建 worktree

# 为 main 分支创建一个 worktree,存放在 ../project-main 目录gitworktreeadd../project-main main

4.2 创建新分支并同时创建 worktree

# 创建新分支 feature/new-dashboard,并以此创建 worktreegitworktreeadd-bfeature/new-dashboard../project-dashboard main

4.3 查看所有 worktree

gitworktree list

输出示例:

/path/to/main-project abc1234 [main] /path/to/project-dashboard def5678 [feature/new-dashboard]

4.4 移除不再需要的 worktree

gitworktree remove../project-feature

4.5 锁定 worktree(防止在prune时被清除)

gitworktree lock../project-security--reason"正在进行安全审计"

4.6 清理已删除的 worktree 引用

gitworktree prune

5.小结

git worktree非常适合并行开发、紧急修复、快速切换分支等场景。它与git clone不同:所有 worktree 共享同一个.git目录,节省磁盘空间,且保持引用一致


参考文献

Git - git-worktree Documentation

http://www.cnnetsun.cn/news/2210969.html

相关文章:

  • 换个字体就好了!拯救你扫不出来的 OpenClaw 飞书登录二维码
  • 广度优先算法(BFS)
  • 等保四级Java医疗平台改造全解析,覆盖密码算法替换、审计日志增强、双因子认证集成及漏洞闭环管理
  • 现代图形API中的管线状态对象(PSO)优化实践
  • Sunshine游戏串流终极指南:三分钟搭建你的跨平台游戏服务器
  • 2026年等离子清洗机定制哪家强?答案即将揭晓!
  • 开源成本监控利器costclaw-telemetry:云原生环境下的成本数据自动化采集实践
  • 3分钟快速上手:如何在Mac上实现NTFS硬盘自由读写
  • Python全站链接爬取工具优化-支持过滤和断点续爬
  • TrafficMonitor插件系统:构建个性化桌面监控中心的完整方案
  • 初创公司如何利用Taotoken的按Token计费模式优化AI实验成本
  • WorkshopDL:非Steam玩家的创意工坊模组下载解决方案
  • CloudBase MCP:AI编程IDE与Serverless部署的智能桥梁实战
  • 3个步骤彻底掌控你的华硕笔记本:G-Helper终极优化指南
  • Hugging Face lerobot:机器人学习的开源利器与应用实践
  • 多智能体协作:AI虚拟开发团队如何重构软件开发流程
  • 50.YOLOv8 工业级全流程实战(CUDA118):训练 + 推理 + ONNX 导出 + TensorRT 加速 + Flask 部署,全套可复制源码 + 避坑指南
  • C/C++宏函数避坑指南:从SQUARE(8+2)=26说起,手把手教你正确加括号
  • 别再让大图拖慢你的网站了!用Docker Compose一键部署imgproxy,给MinIO图片服务加个‘瘦身’插件
  • Steam成就管理终极指南:5分钟快速掌握SAM完整教程 [特殊字符]
  • 你的初面不再是人?2026 留学生如何反杀“沉浸式 AI 面试官”
  • 128. 最长连续序列
  • 从‘单打独斗’到‘团队协作’:用Python简单模拟理解APC中的多变量预测控制(MPC)
  • 游戏开发中的状态机与交互系统设计
  • Sunshine游戏串流完全指南:打造你的个人云游戏服务器终极方案
  • Filebeat vs Logstash vs Fluent Bit:三大日志采集器深度对比与选型终极指南—从零构建企业级日志管道,全面解析架构、性能、生态与云原生实践
  • 如何用Python异步架构构建小红书内容采集系统:XHS-Downloader的技术解析
  • STL体积模型计算器:3D打印成本控制与模型分析的终极利器
  • AI助手越狱攻防:从提示词工程看大模型安全边界与对抗
  • Pearcleaner:彻底解决macOS应用卸载残留问题的智能清理神器