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分支的文件。
存放到同一目录管理
有的项目我们可能会长期维护两个分支,可以重新创建一个总的目录,专门存放多分支目录。
创建裸仓库
git init --bare # 或是 git clone --bare <url>
执行完命令后会创建一个
项目名.git
的文件夹,文件夹中没有任何代码文件,只有git仓库的基本信息。我们将此目录作为管理目录,worktree命令都在此目录下执行
添加仓库的指定分支
git worktree add -b fix/develop ../fix-develop develop
检查项目
git worktree list
返回上级之后能看到前面新创建的目录。
相关资料
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。