git: worktree命令介绍和使用

文章目录

git worktree 是 Git 提供的一个强大功能,允许你在同一个 Git 仓库中同时检出多个分支,而无需克隆多个副本。每个工作树(worktree)都有独立的工作目录、暂存区和 HEAD,但共享同一个 .git 仓库对象数据库,从而节省磁盘空间和提升效率。

https://git-scm.com/docs/git-worktree/zh_HANS-CN


一、基本概念

  • 主工作树(main worktree):即你正常 clone 或 init 的那个目录。
  • 链接工作树(linked worktree):通过 git worktree add 创建的额外工作目录,指向同一仓库的不同分支(或提交)。

二、常用命令

命令说明
git worktree add <path> <branch><path> 创建一个新工作树,检出 <branch>
git worktree list列出当前仓库所有工作树及其状态
git worktree remove <path>删除指定路径的工作树(需先清理干净)
git worktree prune清理已失效(如被手动删除)的工作树记录

三、使用示例

1. 创建一个新的 worktree

假设你在主分支 main 上工作,但需要同时在 feature/login 分支上开发:

# 在当前仓库目录下执行git worktree add../myproject-login feature/login 

这会在 ../myproject-login 创建一个新目录,自动检出 feature/login 分支。

你可以同时在两个目录中独立工作:

  • myproject/:处于 main 分支
  • myproject-login/:处于 feature/login 分支

两者共享同一个 Git 仓库数据(对象、refs 等),但工作文件互不影响。

2. 查看所有 worktree
git worktree list 

输出示例:

/path/to/myproject abcd123 [main] /path/to/myproject-login ef45678 [feature/login] 
3. 删除 worktree

确保目标目录已 clean(无未提交更改),然后:

git worktree remove ../myproject-login 

或手动删除目录后运行:

git worktree prune 

四、注意事项

  • 不能在同一分支上创建多个 worktree(Git 会报错)。
  • 不能删除当前正在使用的工作树。
  • git worktree add 如果指定的分支不存在,会自动基于当前 HEAD 新建。
  • 所有 worktree 共享配置(如 git config),但可以单独设置局部配置(在各自目录下使用 git config 会写入共享 .git/config,建议谨慎)。

五、典型使用场景

  • 并行处理多个分支:比如同时修复 bug(hotfix)和开发新功能(feature)。
  • CI/CD 脚本中快速切换分支构建,避免重复 clone。
  • 文档构建:主分支写代码,gh-pages 分支生成文档,用 worktree 同时维护。

六、兼容性

  • git worktreeGit 2.5(2015 年)起引入。
  • 推荐使用 Git 2.15+ 以获得更稳定的体验。

Read more

Flutter 三方库 flutter_adaptive_scaffold 的鸿蒙化适配指南 - 掌握一套代码适配全场景终端的自适应架构技术、助力鸿蒙应用构建从手机到平板及折叠屏的极致无缝交互体系

Flutter 三方库 flutter_adaptive_scaffold 的鸿蒙化适配指南 - 掌握一套代码适配全场景终端的自适应架构技术、助力鸿蒙应用构建从手机到平板及折叠屏的极致无缝交互体系

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 flutter_adaptive_scaffold 的鸿蒙化适配指南 - 掌握一套代码适配全场景终端的自适应架构技术、助力鸿蒙应用构建从手机到平板及折叠屏的极致无缝交互体系 前言 在 OpenHarmony 鸿蒙应用追求“万物互联、全场景覆盖”的伟大进程中,屏幕尺寸的多样性(从 6 英寸手机到 12 英寸平板,再到 2D/3D 模式切换的折叠屏)是每一位 UI 开发者必须正面迎接的挑战。如何在不为每种设备重写 UI 的前提下,实现导航栏自动从“底部”平滑流转到“侧边”?如何在宽屏模式下自动开启“双栏(Master-Detail)”布局?flutter_adaptive_scaffold 作为一个由 Flutter

By Ne0inhk
在 macOS 上通过 Docker 本地安装 OpenClaw 完整教程

在 macOS 上通过 Docker 本地安装 OpenClaw 完整教程

在 macOS 上通过 Docker 本地安装 OpenClaw 完整教程 什么是 OpenClaw?—— 你的本地 AI 智能体执行框架 OpenClaw 不仅仅是一个聊天机器人,而是一个功能强大的 AI 智能体执行框架。你可以把它想象成一个能自主思考、调用工具、并替你完成复杂任务的数字员工。 🧠 核心概念 * 智能体:OpenClaw 的核心大脑。它能理解你的自然语言指令,拆解任务,并决定调用哪些工具来执行。 * 网关:所有外部访问的入口。它负责处理 WebSocket 连接、管理设备配对、路由消息,是你与智能体交互的桥梁。 * 技能:智能体可调用的具体工具,比如访问文件、操作浏览器、发送消息、查询数据库等。你可以根据需要扩展技能库。 * 记忆:OpenClaw 可以存储对话历史和重要信息,实现长期记忆和上下文理解,让交互更连贯。 * 通道:连接外部聊天平台的渠道,如

By Ne0inhk
HarmonyOS6半年磨一剑 - RcIcon组件实战案例集与应用开发指南

HarmonyOS6半年磨一剑 - RcIcon组件实战案例集与应用开发指南

文章目录 * 前言 * 项目简介 * 核心特性 * 开源计划 * rchoui官网 * 文档概述 * 第一章: 基础用法实战 * 1.1 三种符号引用方式 * 1.2 应用场景 - 工具栏快速导航 * 第二章: 尺寸系统实战 * 2.1 响应式尺寸配置 * 2.2 应用场景 - 统一设计系统尺寸规范 * 第三章: 颜色系统实战 * 3.1 多彩色系配置 * 3.2 应用场景 - 状态指示系统 * 第四章: 双风格系统实战 * 4.1 线型与实底风格对比 * 4.2 应用场景 - 底部导航栏 * 第五章: 圆角系统实战 * 5.

By Ne0inhk
Flutter 组件 short_uuids 适配鸿蒙 HarmonyOS 实战:唯一标识微缩技术,构建高性能短 ID 生成与分布式索引架构

Flutter 组件 short_uuids 适配鸿蒙 HarmonyOS 实战:唯一标识微缩技术,构建高性能短 ID 生成与分布式索引架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 short_uuids 适配鸿蒙 HarmonyOS 实战:唯一标识微缩技术,构建高性能短 ID 生成与分布式索引架构 前言 在鸿蒙(OpenHarmony)生态迈向万物互联、涉及海量离线资源标识、蓝牙广播载荷(BLE Payload)及二维码数据极限压缩的背景下,如何生成既能保留 UUID 强随机性、又能极大缩减字符长度的唯一标识符,已成为优化存储与通讯效率的“空间必修课”。在鸿蒙设备这类强调分布式软总线传输与每一字节功耗敏感的环境下,如果应用依然直接传输长度达 36 字符的标准 UUID,由于由于有效载荷溢出,极易由于由于传输协议限制导致数据截断或多次分包带来的延迟。 我们需要一种能够实现高进制转换、支持双向编解码且具备低碰撞概率的短 ID 生成方案。 short_uuids 为 Flutter 开发者引入了将标准 UUID 转化为短格式字符串的高性能算法。它利用

By Ne0inhk