Git 为我们所有的问题提供了解决方案,您只需要知道在哪里寻找。作为开发人员,上下文切换是您需要在多个场合考虑的工作的一部分。

问题陈述

想象一下;您正在开发一项功能,其中您对尚未提交的文件进行了大量更改,突然您需要处理热修复或更优先的功能。有两种方法可以解决这个问题:

1.使用 Git Stash 工作流

  1. 使用 Git Worktree(你在这里!📍)

Git 工作树救援🌳

Git worktree 可帮助您管理附加到同一存储库的多个工作树。

简而言之,您可以通过维护同一存储库的多个克隆来同时签出多个分支。

好的回到我们的问题!更新更改?新功能?热修复?无论是什么,您都需要更改到不同的分支并在不更改当前工作目录的情况下对其进行处理。

假设这是一项新功能,您的工作流程将如下所示:

1.创建项目的副本并切换到新分支

2.创建一个新功能

3.推一下

4.回到上一个工作目录

创建工作树

假设您的功能名称是feature-x,并且您想要具有相同名称的分支。您可以在同一目录上创建其他工作树或将其移动到所需的路径,我更喜欢后者。

git worktree add命令创建一个工作树以及一个以路径中最后一个单词命名的分支。

git worktree add <PATH>

# Create feature-x directory and branch with the same name.
git worktree add ../feature-x

创建新的 git 工作树

命名分支

如果你想给你的分支一个唯一的名字,那么你可以使用-b标志和add命令。

git worktree add -b feature-xyz ../feature-xyz

Git 工作树创建新的命名分支

跟踪远程分支

假设您想要切换到一个新分支,该分支正在远程跟踪您想要将更改推送到的分支。

git worktree add -b <branch-name> <PATH> <remote>/<branch-name>

git worktree add -b feature-zzz ../feature-x origin/feature-zzz

使用git worktree list查看工作树列表

切换工作树

创建工作树很容易,但如果它们分散在它们之间,则同样难以在它们之间来回导航。您必须git worktree list然后将路径复制到您选择的工作树。为了尽量减少这种摩擦,我构建了一个小工具,让您可以在工作树之间切换,只需使用它们的部分或完整目录名称。

下载 wt CLI 工具以便更快地在工作树之间切换。

有了这个,我可以简单地在我的工作树之间切换。 wt cli 工具在 git 工作树之间切换你可以wt list相当于git worktree list来查看你的工作树列表。现在移动到feature-x工作树目录,我可以使用wt feature-x进入该目录继续工作。要回到我的主工作树目录,我可以只使用wt -

删除工作树

删除 git worktrees现在您已经创建了一个新的工作树,切换到它并进行更改并推送它。要删除工作树,我们可以运行:

git worktree remove <name-of-worktree>

git worktree remove feature-x

结论

Git worktree 是一个方便的功能,它可以让您在项目中进行上下文切换,以便在完全不同的环境中尝试事情,而无需修改您的主工作目录。这可能偶尔会派上用场,但不费吹灰之力就能做到这一点非常巧妙。

我希望本指南对您有所帮助,如果您有任何疑问或更正,请随时与我联系。

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐