git 有个git worktree命令可以用来管理本地多分支目录。

比如正在开发新功能feat/new1 ,这时候develop分支上的功能需要修复,按以往操作应该先将开发的代码存入暂存区,然后切换分支修改然后提交。或者重新在其他位置克隆一份单独管理。

git worktree命令将代码克隆到其他位置,同时集成了克隆时可以创建新分支等参数。克隆之后主目录中也会有记录,可以通过命令查询出克隆目录的位置、移动目录、锁定等。比单纯的手动克隆多了集中管理的能力。

命令

git worktree add [-f] [--detach] [--checkout] [--lock [--reason <string>]]
       [--orphan] [(-b | -B) <new-branch>] <path> [<commit-ish>]
git worktree list [-v | --porcelain [-z]]
git worktree lock [--reason <string>] <worktree>
git worktree move <worktree> <new-path>
git worktree prune [-n] [-v] [--expire <expire>]
git worktree remove [-f] <worktree>
git worktree repair [<path>…​]
git worktree unlock <worktree>

示例

git worktree add -b fix/develop ../fix-develop develop

这样会在上级目录创建一个fix-develop文件夹,分支是fix/develop,里面是develop分支的文件。

存放到同一目录管理

有的项目我们可能会长期维护两个分支,可以重新创建一个总的目录,专门存放多分支目录。

  1. 创建裸仓库

    git init --bare
    # 或是
    git clone --bare <url>
    

    执行完命令后会创建一个项目名.git的文件夹,文件夹中没有任何代码文件,只有git仓库的基本信息。

    我们将此目录作为管理目录,worktree命令都在此目录下执行

  2. 添加仓库的指定分支

    git worktree add -b fix/develop ../fix-develop develop
  3. 检查项目

    git worktree list

返回上级之后能看到前面新创建的目录。

相关资料

Git - git-worktree Documentation (git-scm.com)

Git Worktree的高级使用介绍


LnEoi
707 声望17 粉丝