都 2024 年了,你还不知道 git worktree 么?

文章标题为 「都 2024 年了,你还不知道 git worktree 么?」,作者通过个人经历引出了 git worktree 这一 Git 功能,并详细介绍了它的应用场景和使用方法。以下是对文章内容的概述:

应用场景

文章首先描述了一个常见的开发场景:开发者正在一个特性分支 (feature branch) 上开发新功能,同时需要紧急修复主分支 (master) 上的线上错误。通常,解决这个问题的方法有:

  1. 解法 1:将当前分支的更改提交或暂存,然后切换到主分支进行修复。这种方法的缺点是如果测试正在进行中,则需要等待;如果使用 git stash,整个过程较为繁琐。
  2. 解法 2:克隆一份远程代码到本地,然后切换到主分支进行修复。这种方法的缺点是如果远程仓库很大,克隆过程会非常耗时。

git worktree 的解决方案

git worktree 命令允许开发者在不提交当前更改的情况下,为不同的分支创建独立的工作目录。这样,开发者可以在一个分支上进行开发,同时在另一个分支上修复紧急错误。

如何工作

文章通过以下步骤展示了 git worktree 的使用方法:

  1. 创建一个本地文件夹 worktree_test,并在该文件夹内创建一个 master 分支。
  2. master 分支上模拟构造主干分支,并向一个文件中添加内容。
  3. master 分支检出一个新分支 feature,模拟开发功能,并添加分支独有的内容。
  4. 当线上出现紧急错误时,使用 git worktree add 在当前 feature 分支的基础上建立一个新的工作区 bugfix,该工作区基于 master 分支。
  5. 在新建立的 bugfix 工作区内修复错误,并提交到 master 分支。
  6. 完成后,可以返回到原来的 master 目录,所有之前的提交和未跟踪的文件都保持不变。
  7. 也可以将 bugfix 分支合并到 feature 分支中。

参考资料

文章最后提供了一个参考链接,指向 David Lee 在 Medium 上发表的关于 git worktree 的文章。

通过这篇文章,读者可以了解到 git worktree 是一个强大的 Git 功能,它允许开发者更高效地在多个分支之间切换工作,而无需重新克隆整个仓库或频繁提交和切换更改。这对于处理紧急修复和特性开发并行进行的情况特别有用。

发表评论