都2024年了,你还不知道git worktree么?
2024/5/9 3:02:38
本文主要是介绍都2024年了,你还不知道git worktree么?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
三年前 python 大佬吉多·范罗苏姆(为 Python 程序设计语言的最初设计者及主要架构师)才知道 git worktree ,我现在才知道,我觉得没啥丢人的。
应用场景
如果你正在 feature 的分支中开发新功能,线上版本紧急错误又需要你基于 master 做修复。
可能有如下几种办法解决:
解法 1
- 将本地修改文件通过 git add . && git commit 提交到当前分支,或者通过 git stash 暂存起来
// feature branch git add . git commit git checkout master // or git stash git checkout master
- 分支切到 master,修复完问题后切回 feature
- 若之前是 commit 的可直接开发,若是 git stash 则 git stash pop 出来处理
解法 2
clone 一份同样远程代码到本地,切换到 master 分支来解决错误。
解法 1 缺点:
- 若正在跑一个耗时较长的测试不能动工作区代码,则只能等了
- 用 git stash 方式,暂存和切走到修改完错误切回 feature 至少得 4 步,命令行切来切去也挺麻烦
解法 2 缺点:若远程仓库太大,则 clone 一次会很耗时。
针对上述场景,可以考虑用 git worktree 来解决,该命令可让你直接开一个独立工作区域出去做别的事,未 commit 的档案原封不动留在原来分支。
它如何工作
- 首先创建一个本地文件夹 worktree_test 并在 worktree_test 文件夹内创建 master 分支,然后在 master 内 git init;
mkdir worktree_test && cd worktree_test && mkdir master && cd master/ && git init
- 先模拟构造一个主干分支 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"
- 构造完主干分支 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
这篇关于都2024年了,你还不知道git worktree么?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22初创企业的效率秘诀!实用的看板式任务管理工具推荐
- 2024-12-22新能源汽车销售难题如何破?看板工具助力门店管理升级
- 2024-12-218 款现代无代码工具,轻松提升开发者工作效率 ???????
- 2024-12-21从线索跟踪到业绩提升:销售任务管理系统推荐
- 2024-12-21刚刚发布RobinReach:多渠道社交媒体管理工具 ??
- 2024-12-21跨地域协作无压力!推荐几款必备的可视化协同工具
- 2024-12-21初学者指南:轻松掌握文章编辑器
- 2024-12-21Excel数据导出教程:让数据迁移变得简单
- 2024-12-21Excel数据导入入门教程
- 2024-12-215分钟速览:优化项目管理必备的5款高效工具