平时开发过程中,有可能会有频繁切换 Git 分支的需求(比如改老版本的 bug,同时又在开发新的 feature)。但切换分支是一个非常麻烦的事情,不仅需要保存好当前的改动,有可能切换分支后编译缓存丢失,需要重新整个编译程序。

对于这个问题,同事们有两种解决办法。一是弄两台电脑(壕)。二是同一个项目 clone 多次,在不同的文件夹开发不同的分支。

对于第二个解决办法,其实从 Git 2.6 开始有一个叫做 git-worktree 的命令来做差不多的事情。

基本使用

当想要在一个新的分支开发时,使用下面的命令:

$ git worktree add ../new-feature-or-bug-fix

这样就会在 ../new-feature-or-bug-fix 目录下多出来一个项目(感觉就是复制过去的……)。然后跑到这个目录下开心的开发就好了。

可以用下面的命令看一看现在所有的 worktree:

$ git worktree list

当开发完后,可以直接删除掉 worktree 的目录:

$ rm -rf new-feature-or-bug-fix

清理一下 Git 里存储的信息:

$ git worktree prune

就完事了。

总结

其实跟复制一份没什么差吧……🙃

更详细的使用可以看文档:https://git-scm.com/docs/git-worktree/