返回笔记

How I Use Git Worktrees

AI 摘要 · Qwen 中文摘要 收录
查看原文

文章介绍作者将 git worktree 用作管理编码、评审、模糊测试和杂项任务的并发工作空间,而非仅作为分支切换工具。

核心观点

  • 作者认为 git worktree 更适合管理并发活动,而不是简单替代分支。
  • 他最初用 worktree 代替分支切换,但后来放弃了这种用法。

分支切换习惯

  • 作者避免使用 staging area 和 stash,因为它们容易让状态混乱。
  • 切换分支前常用 git add . 和 git commit -m . 保存当前改动。
  • 切回后可能用 git reset HEAD~ 撤销提交但保留工作区改动,或继续修改后 amend。

五个固定工作树

  • 作者固定使用 5 个 worktree:main、work、review、fuzz 和 scratch。
  • 这些 worktree 主要对应并发活动,而不是与分支一一对应。

main 与 work

  • main 是只读工作树,保存远端 main 的近期快照,用于比较代码、构建时间和测试行为。
  • work 是主要编码工作树,经常切换分支,以便同时比较新旧代码。

review、fuzz 与 scratch

  • review 用于检出他人代码进行评审,可与实现任务并发。
  • fuzz 用于运行长时间模糊测试,通常以 detached HEAD 方式切到特定提交。
  • scratch 用于处理随机小任务,例如快速修复无关 typo 并推送。

典型工作流

  • 作者在 work 中创建带 matklad/ 前缀的分支,并基于 origin/main 开始。
  • 编码后提交,然后在 fuzz 工作树切到该提交运行模糊测试,同时整理提交历史。
  • 满意后使用 push --force-with-lease 并创建 PR。