社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

【第3568期】使用 Git Worktree 进行开发

前端早读课 • 3 周前 • 66 次点击  

前言

介绍如何在开发过程中使用 Git worktree 来提高工作效率,尤其是在同时处理多个任务(如开发新功能和修复错误)时。今日前端早读课文章由 @Igor Kulman 分享,@飘飘编译。

译文从这开始~~

在开发 iOS 应用时,我经常会遇到这样的情况:一边要开发新功能,一边还要修复一个 bug。这种情况下管理代码会变得比较棘手,尤其是当功能开发和 bug 修复的代码有所重叠时。开发者通常会采用以下几种方式来处理:

  • 暂存改动(stash changes)
  • 创建临时提交(temporary commits)
  • 把仓库克隆两份(clone the repository twice)

虽然这些方法都可以用,但都不够理想。最近,我发现了一个更好的解决方案。

【第3519期】使用一条 Git 命令推送整个分支栈

Git Worktree

Git Worktree 是 Git 的一个不太为人所知的功能,我真希望自己早点用上它。它允许你同时检出(checkout)同一个仓库的多个分支。也就是说,你可以同时处理一个功能分支和一个 bug 修复分支,无需暂存改动或创建临时提交。

使用 Git Worktree 非常简单:
 git worktree add ../bugfix-branch bugfix-branch

这条命令会在 ../bugfix-branch 目录下创建一个新的工作区,并检出 bugfix-branch 分支。你可以在这个新目录里独立工作,互不影响当前分支。

你也可以基于某个特定的提交(commit)或标签(tag)创建工作区,而不仅限于已有分支:

 git worktree add ../hotfix v1.2.3

这会在一个新的工作区中检出标签 v1.2.3,你可以查看或修改文件,而不必切换主工作目录里的分支。

如果想移除一个工作区,可以用:
 git worktree remove ../bugfix-branch

你也可以手动删除该文件夹:

 rm -rf ../bugfix-branch

但如果你是手动删除的,Git 还是会把它记作一个存在的 worktree,这时你需要执行清理:

 git worktree prune

或者配置 Git 自动清理无效的工作区:

 git config worktree.prune true

如果你喜欢使用图形界面,macOS 上的 Fork 这类工具也支持 Git Worktree。你可以通过界面方便地管理多个工作区,无需打开终端。

【第2817期】git worktree 的使用

🚧 注意事项:使用 Git Worktree 时需要注意的问题

虽然 Git Worktree 功能强大,但在使用时也有一些限制和风险:

1、不能在多个 worktree 中同时切换到相同的分支

Git 不允许你在两个工作区中同时检出同一个分支,这样做容易引起混乱。

2、修改同一个文件时需小心冲突

如果在不同工作区同时修改了相同文件,合并时可能产生冲突。因此建议尽量避免在多个工作区中编辑同一文件。

3、手动删除目录后需显式清理引用

如果你只是用 rm -rf 删除目录而没有运行 git worktree prune,Git 仍会认为这个工作区存在,可能导致状态异常。

4、部分 Git 工具对 Worktree 支持不佳

一些图形化工具(例如旧版本的 SourceTree)可能不完全支持 Worktree,使用时需注意。推荐使用如 Fork 等工具。

🧰 进阶应用场景

Git Worktree 不只是用来切换分支这么简单,它在更复杂的工作流中也非常实用:

1、与 Monorepo 架构结合

对于使用 Monorepo 的团队,可以通过多个 Worktree 分别检出各模块分支,独立构建与测试,避免干扰。

2、CI/CD 构建并行优化

在持续集成环境中,可以通过 Worktree 检出多个分支并并行执行构建、测试任务,提高资源利用率。

3、与 Git Hooks 联动

配合 post-checkout、post-merge 等 Git Hook,可以在新建 Worktree 时自动运行初始化任务,比如安装依赖或运行 Linter。

【第1294期】JS Linter 进化史

Git Worktree 简化了开发流程,让你可以:
  • 同时在多个分支上工作
  • 避免使用 stash 或临时提交
  • 保持仓库整洁

这个功能极大地提升了我在 iOS 开发中的效率,我强烈建议你也试试看。

关于本文
译者:@飘飘
作者:@Igor Kulman
原文:https://blog.kulman.sk/git-worktree/

这期前端早读课
对你有帮助,帮” 
 “一下,
期待下一期,帮”
 在看” 一下。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/185468
 
66 次点击