git worktree 依赖隔离、多分支开发图文详解

1 前言

  • 今天做项目开发时,发现切换分支后,有一个功能就会有问题,原因是因为两个分支的依赖项不一致,导致每次切换分支时都需要 npm install 一下,那有没有什么办法能做到依赖隔离呢?
  • 我们切换分支开发时,若有不想提交的代码,一般是使用 git stash 暂存起来,然后 git checkout ,开发完成后再使用 git stash pop 将暂存取出来继续开发。但是 git checkout 的开发都是基于同一个文件进行修改,而 node_modules 都会被记录到 .gitignore 文件下进行 git 忽略,所以不会被 git stash 暂存上,如果有依赖变化,切换分支之后 node_modules 使用的是上一个分支的最新依赖,可能会导致原分支上的功能不可用。
  • 使用 git worktree 可以做到依赖隔离,且只需要维护一个仓库,又可以同时在多个分支上进行工作

2 常用命令

2.1 查看所有 worktree

git clone 一个项目之后,都会有一个默认的 worktree

git worktree list

在这里插入图片描述

2.2 添加 worktree

git worktree add 路径名

git worktree add test
  • 在当前目录下新增一个 test 文件夹
  • test 文件夹的内容为当前分支的克隆文件
  • 默认新增一个 test 分支
git worktree add ../test
  • 在上一层级目录下新增一个 test 文件夹
  • test 文件夹的内容为当前分支的克隆文件
  • 默认新增一个 test 分支

git worktree add 路径名 -b 新分支名

git worktree add test -b dev
  • 在当前目录下新增一个 test 文件夹
  • test 文件夹的内容为当前分支的克隆文件
  • 新增一个 dev 分支

git worktree add 路径名 -b 新分支名 远程分支名

git worktree add test -b dev origin/dev
  • 在当前目录下新增一个 test 文件夹
  • test 文件夹的内容为远程分支 origin/dev 的克隆文件
  • 新增一个 dev 分支

2.3 移除 worktree

git worktree remove 工作树名

git worktree remove test

2.4 清洁 worktree

git worktree prune

3 图文详解

  • vscode 打开 commitTest 文件夹,此时本地分支为 master 分支,在该分支上安装了一个 moment 包
    在这里插入图片描述

  • 新增一个名为 test 的 worktree
    新生成的 test 文件夹下自动 clone 与本地 master 分支一样的内容(有eslint,但没有上一步在本地 master 分支上安装的 moment,只会 clone 已经 commit 的内容)
    在这里插入图片描述

  • 为了方便比较, 重新打开一个 vscode ,打开文件夹为 test 文件夹
    安装 axios 包,并新增一个 txt 文件,此时, test 文件夹下的 node_modules 有 axios ,但没有 moment
    在这里插入图片描述

  • commitTest 文件夹下的 node_modules 只有 moment , 没有 axios , 依赖已隔离
    在这里插入图片描述

  • 可正常执行 git add 、 git commit 、 git push 等操作
    在这里插入图片描述

  • 远程仓库上新增了 test 分支, package.json 记录的安装包为 eslint 和 axios ,与本地 worktree 一致
    在这里插入图片描述

  • 执行 git worktree remove test , test 文件夹将被删除,但 test 分支会被保留
    在这里插入图片描述

4 注意事项

  1. 当前 worktree 使用完后,记得执行 git worktree remove ,避免文件越来越多占用磁盘内存
  2. 建议新增 worktree 后, vscode 打开 worktree 新增的文件夹进行开发,否则没有修改内容对比
  3. 若本地存在与新增 worktree 同名分支,会 clone 与本地同名分支的内容
  • 执行 git worktree add 路径名,默认生成与路径名同名的新分支
  • 若本地没有同名分支,则 clone 内容为当前分支的克隆文件
  • 若本地有同名分支,则 clone 内容为同名分支的克隆文件

在 master 分支上执行以下命令,新增一个名为 clone 本地分支

git worktree add clone
git worktree remove clone
git checkout dev

在 dev 分支上执行以下命令, copy 与 clone 文件夹下的内容不同

git worktree add copy
git worktree add clone

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在多人合作中,使用Git来提交代码是一个非常常见的做法。首先,每位开发人员需要克隆远程仓库到本地,并创建自己的分支用于开发新功能或修复bug。当开发人员完成自己的工作后,需要将代码提交到本地仓库,并将修改推送到远程仓库。以下是一个常见的Git多人合作代码提交的流程: 1. 首先,每个开发人员需要从远程仓库克隆代码到本地: ``` git clone <远程仓库地址> ``` 2. 在本地仓库中创建自己的分支,并切换到该分支: ``` git checkout -b <分支名称> ``` 3. 在该分支上进行开发工作,并定期提交自己的代码: ``` git add . git commit -m '描述本次提交的内容' ``` 4. 当开发人员完成自己的工作后,需要将修改推送到远程仓库: ``` git push origin <分支名称> ``` 5. 当其他开发人员也完成了自己的工作并将代码推送到远程仓库后,可以使用以下命令将远程仓库中的最新代码合并到本地仓库: ``` git pull origin <分支名称> ``` 请注意,如果在合并过程中出现冲突,需要解决冲突后再次提交代码。 以上是一个基本的Git多人合作代码提交的流程。每个开发人员都可以在自己的分支上进行开发,并将代码提交到远程仓库,以便其他开发人员可以获取并合并最新的代码。这样可以有效地协作开发,并保持代码的版本控制和一致性。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值