Intro
方便管理当前仓库多工作树的命令。
可以省略git clone/git checkout操作在新的目录切代码。
方便多分支同时管理和开发。
常用命令说明(以purchase-view为例)
# git help worktree的内容
git worktree add [-f] [--detach] [--checkout] [--lock] [-b <new-branch>] <path> [<commit-ish>]
git worktree list [--porcelain]
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 unlock <worktree>
worktree add
创建一个新的目录并checkout代码
# 在../purchase-view__master目录切origin/master分支的代码
➜ purchase-view git:(test) git worktree add --checkout ../purchase-view__master origin/master
Preparing worktree (detached HEAD 55dceaf4)
HEAD is now at 55dceaf4 Merge branch 'test' into 'master'
# 新建成功后可以查看结果
➜ purchase-view git:(test) ✗ git worktree list
/Users/sean/Documents/workspace/f6prj/purchase-view e82c8f29 [test]
/Users/sean/Documents/workspace/f6prj/purchase-view__master 55dceaf4 (detached HEAD)
worktree list
列举仓库的worktree情况
可见worktree add
中结果。
worktree lock/unlock
配置worktree某目录锁定和解锁动作。
暂时没碰到使用场景。
worktree move
将working tree目录移动到新位置。主目录和带有子模块(submodules)的目录不可以移动。
➜ purchase-view git:(test) git worktree move ../purchase-view__master ../new--purchase-view__master
➜ purchase-view git:(test) git worktree list
/Users/sean/Documents/workspace/f6prj/purchase-view e82c8f29 [test]
/Users/sean/Documents/workspace/f6prj/new--purchase-view__master 55dceaf4 [master]
worktree remove
移除指定的worktree
➜ purchase-view git:(test) git worktree remove ../new--purchase-view__master
➜ purchase-view git:(test) git worktree list
/Users/sean/Documents/workspace/f6prj/purchase-view e82c8f29 [test]
worktree prune
清理worktree的配置信息 $GIT_DIR/worktrees
例如手动删除了一个worktree的文件夹但是没有执行git worktree remove
,git并不能识别出已经删除了。
可以使用git worktree prune
手动更新项目的woktree配置。
推荐使用git worktree remove
移除worktree。