news 2026/5/8 17:09:14

Git Worktree:多分支并行开发神器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Git Worktree:多分支并行开发神器

在日常开发中,我们经常会遇到这样的场景:

  • 正在feature分支开发新功能,突然需要切到main修一个线上 bug
  • 当前分支有未完成代码,不想stash,也不想临时提交
  • 想同时运行两个不同分支的项目,方便对比效果
  • 想在多个分支之间并行开发,但又不想重复 clone 多份仓库

这时,git worktree就非常有用。

很多人刚接触git worktree时会觉得它有点抽象:
工作树到底是什么?它和普通项目目录有什么区别?git worktree add又到底做了什么?

这篇文章会从原理、作用、用法、示例和常见注意点几个角度,系统总结 Git 工作树。


一、什么是 Git 工作树?

在 Git 中,工作树(working tree / worktree)指的是你本地项目目录里那一份“真实可见、可编辑的文件”。

比如一个普通 Git 项目:

my-project/ .git/ src/ README.md package.json

其中:

my-project/

这个目录就是一个工作树。

你在这里修改代码、创建文件、删除文件,这些变化都发生在工作树中。


二、Git 的三个核心区域

理解工作树之前,最好先理解 Git 的三个核心区域:

工作树 working tree ↓ git add 暂存区 index / staging area ↓ git commit 本地仓库 repository

1. 工作树:你正在编辑的文件

工作树就是你当前看到的项目目录。

例如你修改了:

README.md

这时变化首先出现在工作树里。


2. 暂存区:准备提交的内容

执行:

gitaddREADME.md

之后,修改会进入暂存区。

暂存区可以理解为“下一次 commit 的候选内容”。


3. 本地仓库:已经提交的历史

执行:

gitcommit-m"update README"

之后,这次修改就会进入 Git 的提交历史。


三、普通 Git 工作方式的问题

正常情况下,一个 Git 仓库通常只有一个工作目录。

例如:

my-project/

你在里面切换分支:

gitswitch maingitswitch feature-logingitswitch bugfix-123

每次切换分支,Git 都会修改当前目录里的文件,让它们变成对应分支的状态。

也就是说:

一个普通工作目录,同一时间只能处于一个分支上。

这就带来一些问题。


四、普通切分支的典型痛点

假设你正在feature-login分支开发登录功能:

gitswitch feature-login

你写了一半代码,还没有提交。

突然线上有 bug,需要切到mainhotfix分支修复。

这时你可能会遇到:

error: Your local changes to the following files would be overwritten by checkout

Git 不让你切分支,因为当前工作区有未保存的修改。

常见解决办法有几个:

方式一:临时提交

gitadd.gitcommit-m"WIP"

缺点是会产生临时提交,后续可能还要整理提交历史。


方式二:stash

gitstashgitswitch main

修完之后再:

gitswitch feature-logingitstash pop

缺点是流程有点绕,如果 stash 多了,管理起来也容易混乱。


方式三:重新 clone 一份仓库

gitclone<repo-url>my-project-hotfix

缺点是比较重,仓库对象、依赖、配置都可能重复一份。


更好的方式:使用git worktree

git worktree可以让你不用切换当前目录,也不用 stash,更不用重新 clone。


五、git worktree的核心思想

git worktree的核心思想是:

基于同一个 Git 仓库,创建多个独立的工作目录,让不同目录可以同时处于不同分支。

例如你原来有一个项目目录:

my-project/ # main 分支

你可以通过git worktree add新建一个目录:

gitworktreeadd../feature-login feature-login

执行后会变成:

my-project/ # main 分支 feature-login/ # feature-login 分支

这两个目录都可以独立编辑、运行、提交代码。

它们共用同一个 Git 仓

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 17:08:59

SD-PPP:Photoshop AI插件终极指南 - 5分钟实现AI绘图无缝协作

SD-PPP&#xff1a;Photoshop AI插件终极指南 - 5分钟实现AI绘图无缝协作 【免费下载链接】sd-ppp A Photoshop AI plugin 项目地址: https://gitcode.com/gh_mirrors/sd/sd-ppp 还在为AI绘图和Photoshop之间的繁琐切换而烦恼吗&#xff1f;SD-PPP这款革命性的Photoshop…

作者头像 李华
网站建设 2026/5/8 17:08:51

终极中兴光猫配置解密:ZET工具快速上手实战指南

终极中兴光猫配置解密&#xff1a;ZET工具快速上手实战指南 【免费下载链接】ZET-Optical-Network-Terminal-Decoder 项目地址: https://gitcode.com/gh_mirrors/ze/ZET-Optical-Network-Terminal-Decoder 中兴光猫配置解密是网络运维和家庭网络优化的关键需求&#xf…

作者头像 李华
网站建设 2026/5/8 17:08:49

Beyond Compare 5密钥生成终极指南:3步破解30天评估限制

Beyond Compare 5密钥生成终极指南&#xff1a;3步破解30天评估限制 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 你是否曾经在使用Beyond Compare 5进行文件对比时&#xff0c;突然遭遇"…

作者头像 李华
网站建设 2026/5/8 17:08:40

Windows 10 电脑设置为 NAT 网关

Windows 10 电脑A作为 NAT 网关&#xff0c;电脑B通过电脑A访问外网 的完整配置步骤。你的关键条件是&#xff1a;电脑A外网网卡&#xff1a;192.168.50.x 电脑A内网侧不能再用 192.168.50.x 电脑A内网侧建议改成&#xff1a;192.168.60.1 电脑B建议改成&#xff1a;192.168.60…

作者头像 李华
网站建设 2026/5/8 17:08:21

欧洲芯片战略转型:从制造到下一代计算范式与开放生态

1. 项目概述&#xff1a;一份关乎欧洲技术生存的蓝图 最近&#xff0c;欧洲的科技圈和半导体产业界都在热议一份名为《HiPEAC Vision 2025》的文件。乍看之下&#xff0c;这像是一份来自学术界的、充满晦涩术语的研究路线图&#xff0c;但如果你深入其中&#xff0c;会发现它实…

作者头像 李华