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

再也不用克隆多个仓库啦!git worktree 一个 git 仓库可以连接多个工作目录

我在 feature 分支开发得多些,但总时不时被高优先级的 BUG 打断需要临时去 develop 分一个分支出来解 BUG。git 2.6 以上开始提供了 worktree 功能,可以解决这样的问题。

阅读本文将了解使用 git worktree 高效进行并行开发的方法。


git worktree 从一个仓库中可以创建多个工作目录,方便多开编辑器并行开发。

快速上手

git worktree add -b <新分支名> <新路径> <从此分支创建>

例如,你正在某个 feature 分支开发,希望从 master 分出一个分支来解决某个紧急的 BUG:

git worktree add -b t/walterlv/bugfix-100 ../Demo.bugfix master

这样,原本的仓库文件夹的同级目录下会出现一个 Demo.bugfix 文件夹(当然名字随便取)。这个仓库里只有一个 .git 文件用来记录这是主仓库的一个工作目录。

自此,这两个工作目录在工作上看起来就像两个独立的仓库一样,都可以运行各种命令,包括切换分支。

相比于克隆多个仓库,使用这种方法创建的多个目录,有诸多好处:

  1. 只有一个仓库会占用版本库的空间,其它只占用工作目录的空间,对大型项目而言非常节省空间。
  2. 因为所有工作目录共享一个仓库,所以一个更新意味着整个更新(A 目录里对分支做的改动,B 目录里切到此分支也是改动后的;避免到时候找不到某个未推送的改动改到了哪个仓库)

注意事项

使用 git worktree 创建的多个目录,不能有任何两个目录在同一个分支下——原因应该不言自明。

如果要删除其中一个工作目录,直接删除文件夹即可。随后使用命令清除多余的已经被删的工作目录:

git worktree prune

相关文章:

  • 让一个 csproj 项目指定多个开发框架
  • 在操作系统重启后恢复应用程序的工作状态
  • 生成代码,从 T 到 T1, T2, Tn —— 自动生成多个类型的泛型
  • 应该抛出什么异常?不应该抛出什么异常?(.NET/C#)
  • 关闭模态窗口后,父窗口居然跑到了其他窗口的后面
  • 语义耦合(Semantic Coupling)
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • 在 Windows 安装期间将 MBR 磁盘转换为 GPT 磁盘
  • 解决大于 4GB 的 Windows 10 镜像在 UEFI 模式下的安装问题
  • 为什么 UEFI 方式启动的 U 盘必须使用 FAT32 文件系统?
  • 不再为命名而苦恼!使用 MSTestEnhancer 单元测试扩展,写契约就够了
  • Windows 10 自带那么多图标,去哪里找呢?
  • 如何删除 Windows 10 系统生成的 WindowsApps 文件夹
  • 命令“xxx.exe xxx”已退出,代码为 n。这些错误是什么意思?
  • 将 async/await 异步代码转换为安全的不会死锁的同步代码
  • [译]如何构建服务器端web组件,为何要构建?
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 2017年终总结、随想
  • Android 控件背景颜色处理
  • Android交互
  • Cookie 在前端中的实践
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • JWT究竟是什么呢?
  • PHP 7 修改了什么呢 -- 2
  • Redis学习笔记 - pipline(流水线、管道)
  • spring boot下thymeleaf全局静态变量配置
  • Spring Cloud Feign的两种使用姿势
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 对JS继承的一点思考
  • 思维导图—你不知道的JavaScript中卷
  • 小程序测试方案初探
  • ​业务双活的数据切换思路设计(下)
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • ( 10 )MySQL中的外键
  • (145)光线追踪距离场柔和阴影
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (四)Controller接口控制器详解(三)
  • (原)Matlab的svmtrain和svmclassify
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)大型网站的系统架构
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net(C#)中String.Format如何使用
  • .net访问oracle数据库性能问题
  • .NET中的十进制浮点类型,徐汇区网站设计
  • @Import注解详解
  • @JsonSerialize注解的使用
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • @Transactional类内部访问失效原因详解
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [Android] Upload package to device fails #2720
  • [BUG]vscode插件live server无法自动打开浏览器