跳到主要内容

Git Worktree

添加

# 添加 test 分支到 ../test 目录
git worktree add ../test
# 添加 test-1 分支到 ../test 目录
git worktree add ../test test-1
# 添加 origin 下的 test/test-1 分支到 ../test 目录
git worktree add ../test origin/test/test-1
# 基于当前分支创建 test 分支,并添加该分支到 worktree,目录为 ../test
git worktree add -b test ../test
# 使用 v1.18.5 这个 tag 创建 v1.18.5-debug 分支并添加该分支到 worktree,目录为 ../v1.18.5-debug
git worktree add -b v1.18.5-debug ../v1.18.5-debug v1.18.5

查询

$ git worktree list
/data/git/linux/master 379f604cc3dc [master]
/data/git/linux/tencentos-lts-5.4.119-20.0009 edc9e113fa37 [linux-5.4/lts/5.4.119-20.0009]
/data/git/linux/tencentos-lts-5.4.241-30.0017 79059974d91f [linux-5.4/lts/5.4.241-30.0017]
/data/git/linux/v6.15 379f604cc3dc [heads/v6.15]

删除

# 删除 worktree 中指定目录
git worktree remove ../test

最佳实践

# 准备一个目录存放项目所有分支代码
mkdir kubernetes
cd kubernetes

# 克隆裸仓库并添加主分支到子目录
git clone --bare https://github.com/kubernetes/kubernetes.git .git
git worktree add master

# 添加其它 fork 的仓库到 remote
git remote add imroc https://github.com/imroc/kubernetes.git
git fetch imroc

# 基于 test-c 分支或 tag 新建一个 test-a 分支并添加到 test-b 目录
git worktree add -b test-a test-b test-c