git worktree同一个仓库多个分支并行开发和管理
介绍
Git Worktree 是 Git 提供的一个功能,允许你在同一个仓库中同时工作在多个工作目录中,每个目录都有自己的工作树和索引。这对于同时处理多个分支或版本非常有用。
常用命令
| 命令 | 解释 |
|---|---|
git worktree --help |
查看命令帮助 |
git worktree list [-v | --porcelain [-z]] |
列出每个工作树的详细信息 |
git worktree remove [-f] <worktree> |
删除指定的工作树 |
git worktree prune [-n] [-v] [--expire <expire>] |
清理工作树的信息 |
git worktree add [-f] [--detach] [--checkout] [--lock [--reason <string>]] [--orphan] [(-b | -B) <new-branch>] <path> [<commit-ish>] |
新增工作树 |
重要命令讲解
git worktree add
应用场景
[path] 不能带有特殊字符,规则同本地创建文件夹一致。如路径不能包含“/”,可以用如"-"来替代
1. 本地创建新分支
假设有一个vite-project的项目,本地创建新分支"feature/2025/update":
(注意:这里是创建新分支,不要与远程分支名一样!)
git worktree add ../feature-20250112-update -b feature/20250112/update
../feature-20250112-update:代表在vite-project同级下创建名字叫feature-20250112-update的文件夹,通常为了辨识度,名字会和分支名雷同;
-b 后面跟的就是实际要创建的新分支名称;

此时通过“git worktree list”查看工作树信息,已经列出了刚创建好的工作树目录,同时“git branch”也能够查看到新分支“feature/20250112/update”;
2. 拉取远程分支
假设本地没有“feature/2025/update”分支,准备拉取远程分支"feature/2025/update":
git worktree add ../feature-20250112-update feature/20250112/update
可以注意到去掉了-b,并且拉取的分支名称要和远程分支名称保持一致,不需要写“origin”,直接写分支本名即可,git会自动识别匹配;

创建后可以在信息中看出,明确指明了 set up to track 'xxx' 的是追踪的哪个远程分支;“git worktree list” 可以看到已经创建成功了,同样“git branch” 能够看到本地有了同名分支;
【注意】 如果远程分支名称写错了,会有错误提示;如果明确是要创建新分支,记得在新分支前加上-b;

git worktree remove
【操作流程】
- "git worktree list" 查看已有的工作树
- "git worktree remove " 删除指定分支
- 如果在文件夹中手动删除了工作树,通过 “git worktree prune” 清理工作树信息
- 删除工作树后,“git branch” 查看本地分支列表,“git branch -D” 删除与工作树同名的分支
VSCode 推荐插件
git worktree可视化插件,评测了几个类似的插件,最终选了这个;
有了这个插件就可以简化命令操作,切换工作树也很方便,可以试试~

git worktree同一个仓库多个分支并行开发和管理的更多相关文章
- [.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下)
[.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下) 本篇导读: 接上篇继续介绍SVN的高级功能,即使用分支并行开发.随着需求的不断变更,新功能的增加.特别是 ...
- git clone远程仓库的指定分支
正常clone方式 git clone <远程仓库地址> 默认clone的是远程仓库的master分支 clone指定分支 git clone -b <分支名> <远程仓 ...
- 如何使用git cherry-pick将同一个仓库的某个分支的某些commit合并到当前分支?
答: git cherry-pick <another-branch's commit-id>
- git合并不同仓库下的分支
1.把lib合并到pro $ git remote -v origin git@192.168.1.1:lib.git (fetch) origin git@192.168.1.1:lib.git ( ...
- git 从远程仓库获取所有分支
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}& ...
- 简进祥-SVN版本控制方案:多分支并行开发,多环境自动部署
两地同时开发一个产品,目前线上有3个环境:测试环境.预发布环境.生产环境.目前系统部署采用jenkins自动化部署工具 用jenkins部署的方案 jenkins 测试环境:配置了各个分支的svn 地 ...
- svn版本控制方案:多分支并行开发,多环境自动部署
背景 keywords:svn,trunk,branch,jenkins,maven,merge 两地同时开发一个产品,目前线上有3个环境:测试环境.预发布环境.生产环境.目前系统部署采用jenkin ...
- git 本地仓库和远程仓库及本地分支和远程分支
从远程git仓库签出代码: $ git clone git://aaa.com/git_project.git (远程git服务器项目所在地址) 当你需要克隆远程项目到本地时,默认会把项目保存在名 ...
- iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )
一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git的起源 作者是Linux之父:Linus Bened ...
- git小技巧--提取/合并某分支的部分文件
软件开发基本都是多个feature分支并行开发,而在上线前有可能某个分支的开发或测试还没有完成,又或者是产品调整,取消了该分支功能的上线计划,我们在release前不合并该分支即可,然而如果该分支中的 ...
随机推荐
- 《Selenium自动化测试实战:基于Python》之 基于Docker与Selenium Grid的测试技术
基于Docker与Selenium Grid的测试技术 10.1 Selenium Grid简介 尽管即将推出的Selenium 4.0对Seleni ...
- 如何使用Ida Pro和Core Dump文件定位崩溃位置(Linux下无调试符号的进程专享)
我们在嵌入式Linux开发过程中经常会遇到一个问题,就是程序崩溃后不知道具体位置.因为我们发布到生产环境的一般是没有调试符号的(使用strip或编译时加-s参数,CMake生成的编译指令中的-O3也会 ...
- Windows系统DOS命令详解
一. DOS 的历史 DOS(Disk Operating System),磁盘操作系统 1980 年,西雅图程序员蒂姆-帕特森,86-DOS 1981 年由微软公司购买并改进,更名为 MS-DOS ...
- 值得推荐的IT公司名单(广州篇)
广州,作为中国南方的重要城市,不仅历史悠久,而且在科技创新方面也具有极高的活力.特别是在IT领域,广州孕育了许多知名企业和创业公司,成为众多技术人才的聚集地. 本文将介绍一些在广州值得去的IT公司,为 ...
- vagrant 安装centos8 虚拟机搭建lamp环境
首先保证已经安装了 virtualbox vagrant两个软件 然后找个目录下载centos8 的 box wget https://vagrantcloud.com/generic/boxes/c ...
- Android之JNI开发
JNIJNI是Java Native Interface的缩写,俗称Java本地接口,是Java语言提供的用于Java和C/C++相互沟通的机制,Java可以通过JNI调用本地的C/C++代码,本地的 ...
- Docker之磁盘清理
Docker 很占用空间,每当我们运行容器.拉取镜像.部署应用.构建自己的镜像时,我们的磁盘空间会被大量占用. 如果你也被这个问题所困扰,咱们就一起看一下 Docker 是如何使用磁盘空间的,以及如何 ...
- Blazor 组件库 BootstrapBlazor 中Modal组件介绍
组件说明 Model组件是一个模态框组件,可以弹出一个对话框,适合需要定制性更大的场景. 它的样子如下: 其html代码为: <div class="modal-content&quo ...
- 分析Java值传递与引用传递
背景 今天在公司做需求的时候,突然遇到了这个问题,八股文背过,但是又记不大清楚了.索性写下来,方便我这笨蛋脑子下次看. 解释 理解这个问题在于看它的角度(强调.加粗) 那我们开始,Java中一切都是值 ...
- ZCMU-1110
思路:- 首先可以知道最少动就是从三个角对称的划分 因为不是对称划分则会出现破坏了正三角,后面还要重新对好 之后就可以进行推导(按三角形我没看懂) 其中设底上截出来的三角形的底为i,则上面就是n-2* ...