0x00 实践感受总结:
worktree
开发模式适合那些在本项目git仓库内就能独立运行的,不依赖其他仓库代码的项目。
- 适合 前端Vue、React、ReactNative等项目;
- 不适合多仓库协同运行的项目开发:如
iOS
引入pods
管理三方库的工程。因为三方库需要集成到宿主里面才能运行,变动了pod
库的worktree
,也就意味变动了目录,需要重新pod install
才会生效,实际开发起来并不方便。
0x01 初级用法:
- 进入git仓库根目录,创建新的
worktree
,路径一般和工作目录同级git worktree add -b <新分支名> <新路径> <从此分支创建>
- 之后
cd
到刚才创建的目录中,进行开发 - 开发结束后直接删除刚才创建的目录,然后执行下面的命令清理
worktree
即可git worktree prune
0x02 进阶使用
进阶用法参考了日拱一兵这位大神的文章,这里表示感谢,建议大家点进去阅读一下,里面用图文并茂的方式详细介绍了git bare
的原理。
- 首先,创建一个目录作为你项目的根路径(比如这里叫
myrepo
), 并cd进去mkdir myrepo cd myrepo
- 接下来以
bare
的形式, 将仓库clone
到项目根路径下的.bare
文件夹内git clone --bare git@xxx.git .bare
- 在项目根路径下创建一个
.git
文件,文件内容是以gitdir
的形式指向我们的.bare
文件夹, 并修改.git
文件为:gitdir: ./.bare
- 编辑
.bare/config
文件,并修改[remote "origin"]
内容,和下面内容保持一致。这确保我们创建worktree
切换分支,可以显示正确的分支名称在url = xxx下面添加一行: fetch = +refs/heads/*:refs/remotes/origin/*
- 接下来就可以创建
worktree
了,首先我们要为master
分支创建worktree
git worktree add master
- 添加其他分支
remote-branch 不用带origin路径
a. 添加远端不存在的分支
b. 添加远端存在的分支git worktree add -b <local-branch> <remote-branch>
git worktree add <local-branch> <remote-branch>
- 最后想在哪个分支上开发,就直接进入相应的目录开发就可以了。
0x03 感谢
感谢日拱一兵大神的文章,博客在这里:https://www.cnblogs.com/FraserYu/