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

应用场景

文章首先描述了一个常见的开发场景:开发者正在一个特性分支(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功能,它允许开发者更高效地在多个分支之间切换工作,而无需重新克隆整个仓库或频繁提交和切换更改。这对于处理紧急修复和特性开发并行进行的情况特别有用。

发表评论