首页 > 其他分享 >都2024年了,你还不知道git worktree么?

都2024年了,你还不知道git worktree么?

时间:2024-04-22 16:46:55浏览次数:34  
标签:rooi git worktree feature 2024 master txt

三年前 python 大佬吉多·范罗苏姆(为 Python 程序设计语言的最初设计者及主要架构师)才知道 git worktree ,我现在才知道,我觉得没啥丢人的。

应用场景

如果你正在 feature 的分支中开发新功能,线上版本紧急错误又需要你基于 master 做修复。

可能有如下几种办法解决:

解法 1

  1. 将本地修改文件通过 git add . && git commit 提交到当前分支,或者通过 git stash 暂存起来
// feature branch
git add .
git commit
git checkout  master

// or
git stash
git checkout  master
  1. 分支切到 master,修复完问题后切回 feature
  2. 若之前是 commit 的可直接开发,若是 git stash 则 git stash pop 出来处理

解法 2

clone 一份同样远程代码到本地,切换到 master 分支来解决错误。

存在问题

解法 1 缺点:

  1. 若正在跑一个耗时较长的测试不能动工作区代码,则只能等了
  2. 用 git stash 方式,暂存和切走到修改完错误切回 feature 至少得 4 步,命令行切来切去也挺麻烦

解法 2 缺点:若远程仓库太大,则 clone 一次会很耗时。

针对上述场景,可以考虑用 git worktree 来解决,该命令可让你直接开一个独立工作区域出去做别的事,未 commit 的档案原封不动留在原来分支。

它如何工作

  1. 首先创建一个本地文件夹 worktree_test 并在 worktree_test 文件夹内创建 master 分支,然后在 master 内 git init;
mkdir worktree_test && cd worktree_test && mkdir master && cd master/ && git init
  1. 先模拟构造一个主干分支 master,向 rooi.txt 文件中写几行内容#1
//master
vi rooi.txt
cat rooi.txt
master:add:rooi.txt     (#1)

git add rooi.txt
git commit -m "add:rooi.txt"
  1. 构造完主干分支 master 后,我们生成一个 feature 分支,该分支模拟开发功能分支,并写一些分支独有内容#2:feature:modify rooi.txt 和#4 生成一个临时 untracked file: a.temp
// new branch in master
git checkout -b feature

// feature
cat rooi.txt
master:add:rooi.txt   (#1)

vi rooi.txt           (#2)
cat rooi.txt
master:add:rooi.txt
feature:modify rooi.txt

git add rooi.txt      (#3)
git commit -m "dev:modify"
[feature 4d300fb] dev:modify
 1 file changed, 1 insertion(+)

touch a.temp          (#4)

git status            (#5)
Untracked files:
a.temp

线上紧急错误来了

此时我们在 feature 分支通过 git worktree add 建立一个工作区#1, 注意此时临时目录区在 d:\work\worktree_test 目录下
说明: git worktree add 中 ../bugfix 表示新建工作区名字,后面 master 表示跟进当前主干 master 分支来新建,也就是当前工作区 bugfix 是完全以 master 为基准建立的副本。

// d:\work\worktree_test\master  in feature
git worktree add ../bugfix master (#1)
// to dir : d:\work\worktree_test
cd ..

// d:\work\worktree_test
ls
bugfix/ master/

cd bugfix
cat rooi.txt
master:add:rooi.txt

vi rooi.txt
cat rooi.txt
master:add:rooi.txt
bugfix:fix bug

git add rooi.txt      (#3)
git commit -m "bugfix:fix bug"

如上,bugfix 分支是依照 master 分支构建工作区,此时可以直接提交到 master 分支上。

继续开发功能

通过#1 回到原来 master 目录下可以看到,之前提交和 untracked file 都存在,且在 feature 分支上,现场原样保持。

// in bugfix dir master
// d:\work\worktree_test\bugfix
cd ..
cd master                       (#1)

当然你也可以合并 bugfix 到 feature 分支

// feature
git merge master

如下效果图中,可以创建多个工作区副本

参考资料

It’s 2024, I Haven’t Used Git Worktree Yet | by David Lee | Mar, 2024 | Medium

标签:rooi,git,worktree,feature,2024,master,txt
From: https://www.cnblogs.com/programmingBB/p/18150897

相关文章

  • Environment variable $SOURCE_DATE_EPOCH: No digits were found:
    一、报错信息Environmentvariable$SOURCE_DATE_EPOCH:Nodigitswerefound: 二、解决方法1、修改build/main.mk核心操作如下:①makefile增加【fix】项,为了执行【date+%s>version.date】②makefile的【world】后面增加依赖【fix】 2、成型后的m......
  • docker下安装gitlab配置以及备份
    安装dockerrun--detach--publish443:443--publish9980:80--publish9922:22--namegitlab--restartalways--volume/srv/gitlab/config:/etc/gitlab--volume/srv/gitlab/logs:/var/log/gitlab--volume/srv/gitlab/data:/var/opt/gitlab--shm-siz......
  • 2024激活Typora,最新版本的1.8.10.0可用
     原文https://blog.csdn.net/m0_58416529/article/details/136098186目前最新版本1.8.10.0也是可以实现激活的注:免修改注册表、不用修改时间,更不需要破解补丁01、下载&安装Typora从官网下载最新版本的Typora,并安装02、激活Typora找到Typora安装目录,依次找到这个文件r......
  • re-vctf2024-vm
    vctf2024-vm一.vctf2024vm题的题解,一直没有整理,是赛后看大佬wp才知道是upx魔改+rc4的。。二.解题思路1.去upx魔改:VCTF2024ezvm(虚拟机逆向初探)_vctfvm-CSDN博客[原创]UPX源码学习和简单修改-加壳脱壳-看雪-安全社区|安全招聘|kanxue.com加壳流程:(博客总结)a.写入文件的......
  • 云原生周刊:Kubernetes v1.30 发布 | 2024.4.22
    开源项目推荐pv-migratepv-migrate是一个CLI工具/kubectl插件,可轻松将一个Kubernetes的内容迁移PersistentVolumeClaim到另一个Kubernetes。ClaudieClaudie是一个云原生的Kubernetes管理平台,具备跨多个云提供商和本地数据中心的多云和混合云集群管理能力。它通过......
  • 2024-04-22 微信小程序开发之ios输入框光标指向不正确
    业务场景:微信小程序开发中,页面有一个固定在底部(实测只要是设置了固定的输入框都会这样,如果可以改变布局,不固定定位则可避免此问题)的输入框,点击输入框输入文字,操作流程完成。但是!在神奇的ios系统中却不行,就是点击输入框,你是无法触发到输入框的,说白了点不到,安卓就没有这毛病。原......
  • THUWC 2024 游记
    1.16过审了!你说得对但是Gx蒟蒻瑟瑟发抖不敢面基.jpg1.25|Day0认识了一位高中部的一位很厉害的学长!话说怎么这次就我们两个人去(坐高铁来的。早上九点坐到下午三点/youl。车上很无聊,遂睡觉、刷b站、打游戏。正午时无聊去写了一下线段树结果调到一半睡着了/shui。精神......
  • LORS:腾讯提出低秩残差结构,瘦身模型不掉点 | CVPR 2024
    深度学习模型通常堆叠大量结构和功能相同的结构,虽然有效,但会导致参数数量大幅增加,给实际应用带来了挑战。为了缓解这个问题,LORS(低秩残差结构)允许堆叠模块共享大部分参数,每个模块仅需要少量的唯一参数即可匹配甚至超过全量参数的性能。实验结果表明,LORS减少解码器70%的参数后仍......
  • 【国际会议】2024智能交通技术国际会议(ITFT 2024)
    2024智能交通技术国际会议(ITFT2024)将于2024年10月19-21日在芬兰赫尔辛基及线上同步举办。ITFT旨在为研究人员、学者和行业专业人士提供交流平台,共同讨论智能交通技术领域的最新进展。ITFT2024诚邀国内外高校、科研机构专家、学者,企业界人士及其他相关人员参会交流、展示相关领......
  • 2024年4月21日直播源分享
    从今天起,服务器正式更换,有效期三年。原有服务器当前已到期,将无法使用,请大家及时更换到最新的接口地址。直播源获取方式:关注公众号轻笺,发送消息最新,即可获取。本次更新内容如下:新增央视卫视通用线路优化广州频道在移动网络下的播放问题新增了深圳各个频道,当前仅支持电......