多需求并行开发环境

多需求并行开发时的麻烦事

作为一个前端程序员,平常工作中遇到比较恼人的麻烦就是需求很多时------虽然都不大需求没什么技术难度,但都赶到一块了------在需求之间切换开发环境的问题。

如果各个需求是分散在不同仓库下的话,那还好办,分别启动项目就可以了。

但如果两个需求在同一个仓库下的不同分支呢?想要切换到另一个需求的环境,你需要做下面这些事情:

  1. 找到另一个需求对应的分支名
  2. 保存当前分支下的改动,可以 git stash 或者直接提交改动
  3. git checkout 分支名
  4. 等待项目重新启动

使用 git worktree 可以很好的解决这个问题

Git Worktree

git worktree 是用来管理多个工作区的功能。工作区其实就是仓库所在的文件目录,当我们 git clone 一个仓库时,就已经创建了一个工作目录。使用 git worktree 可以创建和管理多个这样的工作目录。

Git - git-worktree Documentation

常用的操作有三个:

  1. git worktree list

    显示当前所有的 worktree

  2. git worktree add <path> <branch>

    在指定的 <path> 下创建一个指定分支 <branch> 的 worktree

  3. git worktree remove <worktree>

    删除指定的 worktree

举个例子:

我们在桌面上 ~/Desktop ,有一个仓库 A ~/Desktop/A ,其中有两个分支 foobar ,分别对应两个需求。现在我们基于 git worktree 搭建一个这两个需求并行的开发环境。

  1. cd 到 A 仓库下
javascript 复制代码
cd ~/Desktop/A
  1. 分别为 foo 和 bar 分支创建一个 worktree。也就是
bash 复制代码
# 这时我们需要指定这个 worktree 的路径
# 建议放在和仓库 A 同级的目录下然后使用分支名当作文件夹名字
git worktree add ../foo foo
git worktree add ../bar bar

这样我们就在~/Desktop/foo~/Desktop/bar 分别创建了一个对应分支的 worktree

  1. 切换到新建的 worktree,安装依赖,启动项目
bash 复制代码
cd ~/Desktop/foo
npm i
npm run dev

cd ~/Desktop/bar
npm i
npm run dev

Vscode

这样就得到了两个并行的开发环境,你只需要在不同的目录下打开 vscode,启动项目就可以了,这两个工作区互不影响,你不再需要做任何切换操作了!

为了更好的区分,你可以使用 Peacock 这个插件给不同的编辑器一个特定的颜色,像下面这样。这在更多的需求并行时很有用

或者打开原生 tab 设置并合并所有窗口,这样可以获得更简洁的布局,在工作区很多时很有用。

Neovim + Iterm2

如果你是个 vim/neovim 用户,那么恭喜你,我们可以使用更(我认为>.<)优雅简洁的 Iterm2 管理多个工作区。

(当然,可能需要更多的配置)

首先设置下 Iterm2 的布局

Theme 设置为 Minimal;Tab bar location 设置为 Left

分别为每个工作区打开两个 tab,一个用来启动项目,一个用来启动 vim/neovim。像下面这样。

右键点击 tab,为不同工作区的 tab 设置一个颜色,帮助区分。

右键点击 tab ⇒ Edit Session ...,为不同工作区的 tab 设置个名字

这里你可以为每个 session 设置不同的配置,不赘述了,大家可以自己去尝试。

这里只讲我自己比较常用的两个:

  1. Badge:非常推荐的功能,Badge 是一个始终存在于终端右上角的一个标识,对于多需求并行开发时,快速知道当前所在工作区很方便。推荐设置一个能一眼看懂的文字。我通常是直接写当前需求的名字。
  1. Tab Title:当前 Tab 的名字,你可以在这里标识出当前 tab 在工作区的具体职责和关键信息。我通常在运行 neovim 的那个 tab 标识出当前的分支和仓库名字,在运行项目的那个 tab 上标识出当前项目运行的端口。

你还可以利用 Iterm2 的 profile 功能把上面这些东西保存下来,方便你重新打开工作区,这里就不展开了。

实际工作中,并行的需求往往大于两个,最终可能变成这样:

这套配置在这时也能有很舒适的开发体验,这里推荐给大家。

我的 neovim config: github.com/MoYuM/nvim

希望大家在日常工作中都能有良好的开发体验~

相关推荐
GISer_Jing31 分钟前
WebGL跨端兼容实战:移动端适配全攻略
前端·aigc·webgl
迦南giser33 分钟前
前端性能——传输优化
前端
小白_ysf38 分钟前
Vue 中常见的加密方法(对称、非对称、杂凑算法)
前端·vue.js·算法
人工智能训练7 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
会跑的葫芦怪8 小时前
若依Vue 项目多子路径配置
前端·javascript·vue.js
pas13610 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
摇滚侠11 小时前
2 小时快速入门 ES6 基础视频教程
前端·ecmascript·es6
珑墨11 小时前
【Turbo】使用介绍
前端
军军君0112 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three
打小就很皮...13 小时前
Tesseract.js OCR 中文识别
前端·react.js·ocr