git worktree与分支依赖隔离
git worktree介绍
git worktree 是 Git 命令,用于管理多分支工作区。
使用场景:
- 同时维护不同分支,隔离分支依赖差异:从原有项目开辟一个分支作为另一个新项目,当两个项目依赖差距越来越大时,每次切换分支后都需要重新安装依赖。通过
git worktree可以隔离两个分支的依赖,并且两个分支可以互相merge、cherry-pick。 - 多个分支同步开发:允许在同一存储库中的不同分支上同时进行工作,而不需要频繁切换分支,这对于需要同时处理多个功能或修复多个 bug 的情况非常有用。
- 进行实验性更改:在不影响主工作目录的情况下,尝试进行实验性的更改或调试。
- 同时进行长期和短期任务:有助于同时处理长期开发任务和短期修复任务,而无需相互影响或混淆。
以下是 git worktree 的子命令:
add:在当前分支下创建一个新工作区。remove:删除一个已添加的工作区。list:显示所有已添加的工作区。lock:锁定工作区以防止在合并或其他操作时被意外删除。unlock:手动取消工作区的锁定。
git worktree add <path> [(-b | -B) <new-branch>]
在当前分支下创建一个新工作区,效果类似于git clone ,但新旧工作区属于同一个仓库,可以正常add、commit、merge等操作。
<path>:要创建的新工作区的路径,一般建立在当前目录的上一层,如../newpath。<new-branch>:要在哪个分支上创建工作区。如果未指定<new-branch>,则表示基于当前分支HEAD创建新分支<path>。-b表示基于当前分支HEAD创建新分支<new-branch>,-B表示强制创建。
# 基于HEAD创建工作区../brance1,分支为brance1
# 相当于 git worktree add ../brance1 -b brance1
git worktree add ../brance1
# 关联branch2创建工作区../brance1,分支为brance2
git worktree add ../brance1 branch2
# 基于HEAD创建工作区../brance1,分支为brance2
git worktree add ../brance1 -b brance2
git worktree remove <worktree>
移除worktree有两种方式。
- 方式一:
# 移除指定工作区<worktree>
git worktree remove <worktree>
- 方式二:直接删除工作区对应的文件夹,然后执行
# 清除worktree记录
git worktree prune
git worktree list
显示所有已添加的工作区。
git worktree list
# 显示完整的hash值
git worktree list --porcelain
git worktree lock <worktree>
用于锁定工作区<worktree>,以防止在合并或其他操作时被意外删除。
git worktree unlock <worktree>
解锁工作区<worktree>。
git worktree处理分支依赖冲突
背景
现在远程仓库有一个项目gitworktree,存在两个分支vue和react,两个分支作为两个项目并行开发,且两分支下的依赖存在差异。
步骤
- 将gitworktree目录下所有内容迁移到新的文件夹gitworktree/project1,方便在一个文件夹下管理。
- 在目录gitworktree/project1下,执行
git worktree add ../vue vue。执行完后可以发现gitworktree目录下存在两个文件夹,分别是project1 和 vue。 - 在目录gitworktree/project1下,执行
git worktree add ../react react。执行完后可以发现gitworktree目录下存在三个文件夹,分别是project1 、 vue 和 react。
这时候就可以愉快的玩耍了,可以像往常一样add、commit、merge,甚至cherry-pick!两个分支vue 和 react已经隔离开了,且依赖互不影响。
与往常不同的是,vue和react之间不能互相切换分支,只需要打开对应工作区即可进入对应的分支。
git worktree与分支依赖隔离的更多相关文章
- git worktree 是什么及其使用场景
先上总结: 在git worktree出现之前, git切换分支前后的文件都只存在在当前文件夹下, git worktree出现之后, 我们可以将分支切换到其他文件夹下 比如如果你的项目有很多个版本分 ...
- 再也不用克隆多个仓库啦!git worktree 一个 git 仓库可以连接多个工作目录
我在 feature 分支开发得多些,但总时不时被高优先级的 BUG 打断需要临时去 develop 分一个分支出来解 BUG.git 2.6 以上开始提供了 worktree 功能,可以解决这样的问 ...
- Git worktree 使用笔记【转】
gitworktree 本地仓库的多个分支在对应的文件夹内管理,能够减少很多操作,便捷高效~ 一 worktree 的基本概念和操作 再也不用克隆多个仓库啦!git worktree 一个 git 仓 ...
- git worktree 使用笔记
一 worktree 的基本概念和操作 再也不用克隆多个仓库啦!git worktree 一个 git 仓库可以连接多个工作目录 - walterlv的专栏 - CSDN博客 再也不用克隆多个仓库啦! ...
- git worktree 目录修复
三种方式挨个尝试,1不行用2 2不行用3 1.拉取阶段失败 git worktree add -f -B xxx_branch ./xxx_branch origin/xxx_branch 强制拉取 ...
- 接上篇:Git Worktree 高级使用,这样清爽多了
前言 上一篇文章 Git Worktree 大法真香 带大家了解了 git worktree 是如何帮助我同时在多个分支工作,并且互不影响的.但是创建 worktree 的目录位置不是在当前项目下,总 ...
- Git Pro - (2)分支
Git 保存的不是文件差异或者变化量,而只是一系列文件快照. 在 Git中提交时,会保存一个提交(commit)对象,它包含一个指向暂存内容快照的指针,作者和相关附属信息,以及一定数量(也可能没有)指 ...
- git worktree
git clone,不管是single-branch,还是non-single-branch,如果同时存在几个clone出来的branches,随着时间的推移,不停的编译.更新.编译...每个bran ...
- git 基于发布分支的开发
创建发布分支: (1) 软件hello-world的1.0发布版本库中有一个里程相对应. /home/jackluo/workspace/user1/workspace/hello-worldgit ...
- git 创建branch分支
开发者user1 负责用getopt 进行命令解析的功能,因为这个功能用到getopt 函数,于是将这个分支命名为user1/getopt.(1)确保是在开发者user1的工作区中cd /home/j ...
随机推荐
- Spring Boot+Thymeleaf+MyBatis--推荐一个后端练手极佳的商城项目
项目整体架构 newbee-mall ├── src/main/java └── ltd.newbee.mall ├── common // 存放相关的常量配置及枚举类 ├── config // 存 ...
- [前端] html和原生js实现鼠标拖动和触摸拖动以及点击后跟随鼠标移动
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- maven打包出现 ����applets.user.service.UserService����-2022新项目
一.问题由来 新项目的框架刚搭建好,还不能正常的运行,我们这边就开始写代码,因为项目还在设计阶段,很多东西比如说需求 都还在讨论之中.分层架构采用的是cola4.0的架构,具体的代码由我们自己来进行实 ...
- config.baseUrl.dev 变量 转移到 .env.local 中
config.baseUrl.dev 变量 转移到 .env.local 中 上下文 vue前端开发 问题 多人写代码的时候,会提交config.js里面的配置文件 解决方案 在根目录创建 .env. ...
- think about 和 think of 区别
about 是 on by out 简称 about 在旁边 在外围 周边 think about you 想你有关的事 of 是 belong to 什么什么的 of指的是 这个人或者这个事本身相关 ...
- 曲线艺术编程第一章 coding curves
原作:Keith Peters 原文:https://www.bit-101.com/blog/2022/11/coding-curves/ 译者:池中物王二狗(sheldon) blog: http ...
- 逆向通达信Level-2 续十一 (无帐号登陆itrend研究版)
<续九>无帐号打开了itrend研究版但是用不了.今次无帐号登陆itrend研究版可以使用行情. 演示三图 1. 首先成功在金融终端无帐号登陆成功. 2. 同理应用在itrend研究版,却 ...
- 【Unity渲染】一文看懂!Unity通用渲染管线URP介绍
一.Unity通用渲染管线(URP) Unity 的渲染管线包含内置渲染管线.SRP.URP和HDRP.自从Unity2019.3开始,Unity将轻量级渲染管线修改为了通用渲染管线,这是一种快速.可 ...
- 记录--纯CSS实现骚气红丝带
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在本文中,我们将探讨如何使用 CSS 以最少的代码创造出精美的 CSS 丝带形状,并最终实现下面这个效果: 下面我们使用html和css来 ...
- 神经网络——基于sklearn的参数介绍及应用
一.MLPClassifier&MLPRegressor参数和方法 参数说明(分类和回归参数一致): hidden_layer_sizes :例如hidden_layer_sizes=(50, ...