介绍

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

【操作流程】

  1. "git worktree list" 查看已有的工作树
  2. "git worktree remove " 删除指定分支
  3. 如果在文件夹中手动删除了工作树,通过 “git worktree prune” 清理工作树信息
  4. 删除工作树后,“git branch” 查看本地分支列表,“git branch -D” 删除与工作树同名的分支

VSCode 推荐插件

git worktree可视化插件,评测了几个类似的插件,最终选了这个;

有了这个插件就可以简化命令操作,切换工作树也很方便,可以试试~

git worktree同一个仓库多个分支并行开发和管理的更多相关文章

  1. [.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下)

    [.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下) 本篇导读: 接上篇继续介绍SVN的高级功能,即使用分支并行开发.随着需求的不断变更,新功能的增加.特别是 ...

  2. git clone远程仓库的指定分支

    正常clone方式 git clone <远程仓库地址> 默认clone的是远程仓库的master分支 clone指定分支 git clone -b <分支名> <远程仓 ...

  3. 如何使用git cherry-pick将同一个仓库的某个分支的某些commit合并到当前分支?

    答: git cherry-pick <another-branch's commit-id>

  4. git合并不同仓库下的分支

    1.把lib合并到pro $ git remote -v origin git@192.168.1.1:lib.git (fetch) origin git@192.168.1.1:lib.git ( ...

  5. git 从远程仓库获取所有分支

    git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}& ...

  6. 简进祥-SVN版本控制方案:多分支并行开发,多环境自动部署

    两地同时开发一个产品,目前线上有3个环境:测试环境.预发布环境.生产环境.目前系统部署采用jenkins自动化部署工具 用jenkins部署的方案 jenkins 测试环境:配置了各个分支的svn 地 ...

  7. svn版本控制方案:多分支并行开发,多环境自动部署

    背景 keywords:svn,trunk,branch,jenkins,maven,merge 两地同时开发一个产品,目前线上有3个环境:测试环境.预发布环境.生产环境.目前系统部署采用jenkin ...

  8. git 本地仓库和远程仓库及本地分支和远程分支

    从远程git仓库签出代码:   $ git clone git://aaa.com/git_project.git (远程git服务器项目所在地址) 当你需要克隆远程项目到本地时,默认会把项目保存在名 ...

  9. iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )

    一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的   git的起源 作者是Linux之父:Linus Bened ...

  10. git小技巧--提取/合并某分支的部分文件

    软件开发基本都是多个feature分支并行开发,而在上线前有可能某个分支的开发或测试还没有完成,又或者是产品调整,取消了该分支功能的上线计划,我们在release前不合并该分支即可,然而如果该分支中的 ...

随机推荐

  1. Selenium测试form表单之checkbox和radio

    一.定义form表单 用到的元素:checkbox和radiobutton 下图定义了一个选择爱好和选择性别的form表单,区域1用到的表单元素是checkbox(复选框),区域2用到的表单元素是ra ...

  2. 看图对比Pytest、Unittest

  3. 快速激活JRebel的方法

    当谈到 JRebel 的激活时,有几种方法可以让您在 IntelliJ IDEA 中使用它.以下是一些选项: 在线激活(推荐): 安装 JRebel 插件后,点击 Jrebel Activation  ...

  4. 在线激活win

    目前DragonKMS神龙版能激活win11.win10.win8/8.1.win7以及server2008/2012/2016/2019/2022等系统版本,其中包括:专业工作站版.企业版.专业版. ...

  5. 2024-11-13:求出所有子序列的能量和。用go语言,给定一个整数数组nums和一个正整数k, 定义一个子序列的能量为子序列中任意两个元素之间的差值绝对值的最小值。 找出nums中长度为k的所有子

    2024-11-13:求出所有子序列的能量和.用go语言,给定一个整数数组nums和一个正整数k, 定义一个子序列的能量为子序列中任意两个元素之间的差值绝对值的最小值. 找出nums中长度为k的所有子 ...

  6. [OtterCTF 2018]-内存取证-WP

    [OtterCTF 2018] WP [OtterCTF 2018] What the password? 题目描述: you got a sample of rick's PC's memory. ...

  7. The 2024 ICPC Asia East Continent Online Contest (II) K.Match

    题面 K.Match 给定长度为 \(n\) 的两个序列 \(a\) 和 \(b\),当且仅当 \(a_i ⊕ b_j ≥ k\) 时,\(a_i\) 与 \(b_j\) 连一条双向边,其中 \(⊕\ ...

  8. PythonDay3Advance

    PythonDay3Advance 运算符 位运算符 进制: 将整数分了几种进制表示法 二进制:由0,1构成,逢2进1,以0b开头 八进制:由0,1,2,3,4,5,6,7构成,逢8进1,以0开头 十 ...

  9. 分布式系统架构1:共识算法Paxos

    1.背景 今天开始更新分布式的文章,工作几年后还没系统的学习分布式的内容,趁着还有时间学习沉淀的时候多输出些文章 2.为什么需要分布式共识算法 思考:现在你有一份随时变动的数据,需要确保它正确存储在网 ...

  10. Java 动态设置 JVM 参数的方法

    Java虚拟机(JVM)在运行Java应用时,其性能调优和资源管理至关重要.虽然许多JVM参数在启动时通过命令行设置,但在应用运行期间动态调整某些参数也是可行的.通过动态设置JVM参数,开发者可以更有 ...