Git worktree如何一次性拉取多个工作目录?
摘要:这篇文章主要讲解 git worktree 在我日常开发工作流中的使用。 背景说明 先来看下我的工作场景。 首先,要开发一个新功能,此时拉取一个功能分支,如:“featxxx”。 然后测试说生产环境发现一个bug,需要紧急修复,此时拉取一
这篇文章主要讲解 git worktree 在我日常开发工作流中的使用。
背景说明
先来看下我的工作场景。
首先,要开发一个新功能,此时拉取一个功能分支,如:“feat/xxx”。
然后测试说生产环境发现一个bug,需要紧急修复,此时拉取一个bug修复分支,如:"fix/yyy"。
接着,产品经理说一个紧急需求要做,没办法,再创建一个分支 ,如:“feat/zzz”。
对于这样一个场景,需要在多个分支里工作。我可不想每次代码写一半,然后贮藏起来,这样太麻烦了。
这样,git worktree 就派上用场了。
官方对这个命令的描述是:一个 git 仓库可以支持多个工作区,允许你一次签出多个分支。
使用
基础命令
添加新的工作区
git worktree add <路径> <分支名>
例如,为修复 bug 创建一个新的工作区:
git worktree add ../fix-yyy fix/yyy
这会在当前目录的外层创建一个名为 fix-yyy 的目录,这个目的会处于 fix/yyy 分支。
基于远程分支创建工作区
如果分支在远程仓库但本地没有,可以直接基于远程分支创建:
git worktree add ../fix-yyy origin/fix/yyy
创建新分支的工作区
如果分支还不存在,使用 -b 参数创建新分支:
git worktree add -b feat/zzz ../feat-zzz
查看所有工作区
git worktree list
输出示例:
D:/project/main abc1234 [main]
D:/project/fix-yyy def5678 [fix/yyy]
D:/project/feat-zzz ghi9012 [feat/zzz]
删除工作区
工作区可以使用下面命令删除:
git worktree remove <工作区路径>
清理工作区记录
有时工作区目录被手动删除,但 Git 还记录着,可以用以下命令清理:
git worktree prune
实战案例
让我用一个完整的案例演示如何使用 git worktree 管理多个工作分支。
