不切换 Git 分支,却能同时在多个分支上工作,我是怎么做到的?

本文介绍了使用Git的git-worktree功能来应对在多个分支上工作的需求,无需频繁切换分支。通过git worktree add创建新的工作区,可以在不同分支上同时进行开发,互不影响。此外,文章还提到了git worktree list用于查看工作区列表,以及git worktree remove和prune用于管理和清理工作区,保持磁盘目录整洁。git-worktree相比于克隆多个repo,更便于同步和管理。
摘要由CSDN通过智能技术生成

作为程序员的我们应该都有一个感受,一旦进入某个项目,从开发,到发布生产,到 hotfix,到后期维护,那基本都有你的份,正在开发某个 feature,老板突然跳出来说让你做生产商的 hotfix 更是家常便饭,面对这种情况,使用 Git 的我们通常有两种解决方案:

  1. 草草提交未完成的 feature,然后切换分支到 hotfix
  2. git stash | git stash pop 暂存工作内容,然后再切换到 hotfix

第二种方式较第一种还好很多,可是面对下面这些场景,stash 依旧不是很好的解决方案

不切换 Git 分支,却能同时在多个分支上工作,我是怎么做到的?

我们面对的场景

  1. 正在 main 分支上跑很长时间的测试,切换到 hotfix 或 feature, 测试就会中断
  2. 项目非常大,频繁地切换索引,成本非常高
  3. 在几年前 release 的旧版本,设置和当前不一样,IDE restructure 适配切换也会带来很大的开销
  4. 切换分支,需要重新设置相应的环境变量,比如 dev/qa/prod
  5. 需要切换到同事的代码,帮助调试代码复现问题

有的同学想到,git clone 多个 repo 不就可以了吗?这是解决上述问题的一个方法,但背后同样隐藏着很多问题:

  1. 多个 repo 的状态是不好同步的,比如没办法快速 cherry-pick, 一个 repo checkout 的分支,另外一个 repo 需要重新 checkout
  2. git history/log 是重复的,当项目历史非常长,.git 文件夹下的内容是非常占用磁盘空间的
  3. 同一个项目,多个 repo,不易管理

那如何做才能满足这些特殊场景,又不出现上述这些问题呢?

git-worktree

其实,这是 Git 2015 年前就开始支持的功能,却很少有人知道它,git-worktree 的使用非常方便,在终端输入:

git worktree --help

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值