最佳实践之Git worktree

3,266 阅读2分钟

0x00 实践感受总结:

worktree开发模式适合那些在本项目git仓库内就能独立运行的,不依赖其他仓库代码的项目。

  1. 适合 前端Vue、React、ReactNative等项目;
  2. 不适合多仓库协同运行的项目开发:如iOS引入pods管理三方库的工程。因为三方库需要集成到宿主里面才能运行,变动了pod库的worktree,也就意味变动了目录,需要重新pod install才会生效,实际开发起来并不方便。

0x01 初级用法:

  1. 进入git仓库根目录,创建新的worktree,路径一般和工作目录同级
    git worktree add -b <新分支名> <新路径> <从此分支创建>
    
  2. 之后cd到刚才创建的目录中,进行开发
  3. 开发结束后直接删除刚才创建的目录,然后执行下面的命令清理worktree即可
    git worktree prune
    

0x02 进阶使用

进阶用法参考了日拱一兵这位大神的文章,这里表示感谢,建议大家点进去阅读一下,里面用图文并茂的方式详细介绍了git bare的原理。

  1. 首先,创建一个目录作为你项目的根路径(比如这里叫myrepo), 并cd进去
    mkdir myrepo
    cd myrepo
    
  2. 接下来以bare的形式, 将仓库clone到项目根路径下的.bare文件夹内
    git clone --bare git@xxx.git .bare
    
  3. 在项目根路径下创建一个.git文件,文件内容是以gitdir的形式指向我们的.bare文件夹, 并修改.git文件为:
    gitdir: ./.bare
    
  4. 编辑.bare/config文件,并修改[remote "origin"]内容,和下面内容保持一致。这确保我们创建worktree 切换分支,可以显示正确的分支名称
    在url = xxx下面添加一行:
    fetch = +refs/heads/*:refs/remotes/origin/*
    
  5. 接下来就可以创建worktree了,首先我们要为master分支创建 worktree
    git worktree add master
    
  6. 添加其他分支
    remote-branch 不用带origin路径
    a. 添加远端不存在的分支
    git worktree add -b <local-branch> <remote-branch>
    
    b. 添加远端存在的分支
    git worktree add <local-branch> <remote-branch>
    
  7. 最后想在哪个分支上开发,就直接进入相应的目录开发就可以了。

0x03 感谢

感谢日拱一兵大神的文章,博客在这里:www.cnblogs.com/FraserYu/