git worktree实现分支管理

文章目录

简介

简单来说,git worktree(工作树)是 Git 提供的一个非常强大的高级功能。允许在同一个本地 Git 仓库下,同时检出(checkout)并运行多个不同的分支,并且每个分支都拥有自己独立的物理文件夹。

为什么需要它

想象一下正在开发一个需求:

正在 feature-A 分支上疯狂敲代码,改了十几个文件,项目正跑在本地服务器上。

突然,测试跑过来说:线上出了个紧急 Bug,需要马上切到 main 分支去修复。

传统的做法非常痛苦:

必须先打断当前的思路,把改了一半的代码 git stash 暂存起来(或者写个临时的 commit),然后再 git checkout main。这往往会导致 IDE(比如 IDEA 重新建立索引)、本地服务器报错、热更新失效,搞定之后切回来还得重新恢复现场。

git worktree 的做法极其优雅:

完全不需要动当前正在开发的文件夹。可以直接用 git worktree 命令,在旁边新建一个文件夹,并且这个新文件夹直接绑定 main 分支。

可以用另一个 IDE 窗口打开这个新文件夹去修 Bug。修完后,正在开发的 feature-A 现场依然完好无损。

如何实现

1. 命令式

  • 新建一个工作树并关联分支
bash 复制代码
# 在当前目录的上一层(../)创建一个名为 hotfix-dir 的文件夹
# 并在这个文件夹里检出 main 分支
git worktree add ../hotfix-dir main

# 如果想基于当前分支新建一个名为 bugfix 的分支,并放到新目录中:
git worktree add -b bugfix ../bugfix-dir
  • 查看当前有哪些工作树
bash 复制代码
git worktree list
  • 用完之后删除它
bash 复制代码
# 安全移除工作树(Git 会检查是否有未提交的代码)
git worktree remove ../hotfix-dir

# 如果里面有不想保留的修改,直接强制干掉:
git worktree remove -f ../hotfix-dir

2. 插件式

以idea为例:

  • File->setting->plugins,查询并安装Git Worktree
  • 点击左侧的Git,右击选择Add Worktree
  • 新建一个空的文件夹,下拉框选择基于哪个分支,这里示例的main分支
  • 弹窗一个全新的 IDEA 窗口,直接改代码就行!旧窗口的一切原封不动。
  • 完成开发后,删除

总结

对于经常需要在多个分支之间反复横跳、或者同时处理多个并行任务的开发者来说,git worktree 是一个能大幅提升体验的"神级命令"。

以上为个人学习分享,如有问题,欢迎指出:)

相关推荐
高调的涵涵3 天前
删了1.2GB,.git仍是1.2GB
git
程序员沉梦听雨3 天前
【Git】git-submodule子模块管理
git
全栈陈序员4 天前
Git】从入门到精通(八)—— git log:查看提交历史
大数据·git·elasticsearch
7177774 天前
Git自建用什么工具比较好:Gitea、Forgejo、GitLab CE与Gitee的选型对比
git·gitlab·gitea
lsc_blog5 天前
年底还在招的岗位,先确认缺口和到岗要求
git·缓存·ci/cd·职场和发展·github
全栈陈序员5 天前
【Git】从入门到精通(十一)—— git reset 三种模式详解
git·elasticsearch
全栈陈序员5 天前
【Git】从入门到精通(十)—— 撤销与恢复:git checkout与git restore
运维·网络·数据库·git
全栈陈序员6 天前
【Git】从入门到精通(五)—— git add:将文件加入暂存区
大数据·git·elasticsearch
全栈陈序员6 天前
【Git】从入门到精通(七)—— git status:查看仓库状态
大数据·git·elasticsearch
莫晓燚6 天前
Ansible 13 个常用模块---企业实战
git·github