解决如何实现一个项目中同时开发不同的功能

场景: 在开发项目A功能时,此时后端大佬说需要你切换到B功能分支,去配合它进行问题修复

解决办法

  1: 暂存A功能的代码,切换到B功能分支,然后启动本地服务,让他访问去排查问题(然后就是漫长的等待.......)

  2: 一个项目同时切到两个分支,这样子一个服务给后端大佬去排查问题,另一个服务我们继续撸功能(最优解!!!

 

实现过程:

  法宝:git worktree 命令

  释意: Git worktree 是 Git 提供的多分支开发工具,允许在‌同一仓库中创建多个独立工作目录‌,每个工作目录绑定不同分支,实现并行开发、依赖隔离等功能。

  优点

    1:多分支并行开发:无需频繁切换分支,避免依赖冲突。

    2:依赖隔离:不同工作目录的node_modules等依赖互不干扰。

     3:简化分支管理:共享同一仓库,减少克隆重复代码。

 

  实现步骤:

    1-1:(假设工程位为本地文件目录  /Projects/JobA), 为了实现我们的目的,我们执行命令

git worktree add ../JobB featureB

       这段命令的意思是,我们在本地文件目录 /Projects下 新建了一个JobB的文件夹,并且这个文件夹内的代码已经在功能B分支上了, 这样就可以同时启动多个服务,随便玩啦! (后续不管是临时改线上问题还是其它的问题,我们都能以不变应万变)

  注:要是需要在JobB文件夹中改动了功能代码,也可以正常提交,此时对应的分支就是featureB,不会因为是基于featureA衍生的文件,产生分支错乱

   

    1-2: 等后端大佬问题排查问了,我们回到 /Projects/JobA文件夹,执行命令

git worktree remove ../JobB/

      这样我们就删除了JobB文件夹。

    image

 

 

    思考/疑惑: 整体的操作下来,其实看起来就是复制了一个文件夹出来,这不是和git clone 项目之后切分支一样吗    image

    解惑时刻: 大致看起来操作的过程类似,但其实两者还是存在很大的差别.

 

    区别1:git worktree是多文件夹共用一个.git仓库; git clone 是每个克隆都是单独的.git仓库

    区别2:git worktree会共享大部分对象,只有工作文件本身占磁盘空间;git clone会占用很大的空间

    区别3:git worktree创建和删除工作树速度很快,执行命令之后,立马生成; git clone速度相对较慢(如果是陈年补丁项目,那可以多喝几杯水)

    区别4:git worktree可以同时看到多个分支的代码 (仿佛多了上帝视角); git clone只有一个分支,需要手动切换获取其他分支

    

    对比下来,是不是发现物超所值,对没错,下次遇到类似的场景,就快快滴用起来吧      image

 

    补充几个命令

  1. ‌添加工作树‌
    • 基于现有分支:
      git worktree add <路径> <分支名>
    • 创建新分支:
      git worktree add -b <新分支名> <路径> <远程分支名>

       

   2.‌列出工作树  

git worktree list

 

  3. 清理未使用工作树

git worktree prune

 

 

 

 

 

posted @ 2025-11-19 15:43  收破烂的小伙子  阅读(0)  评论(0)    收藏  举报