一、背景
之前我在看 spring 源码时,选择了一个分支,5.3.x 分支,之后有时我想要去看下最新版的源码。
因为源码总是需要编译成功之后,在 idea 中才支持跳转,让你可以顺利的阅览。所以比如我想要去阅读 6.1 分支的代码,步骤就是
checkout branch 6.1
compile 源码
但是这种情况就会把我编译好的 5.3.x 的产物给清除掉。
今天我遇到了一个工具叫作 git worktree。这个工具可以让你不需要去 checkout,就可以阅读到别的版本的代码。
二、原理
我使用完毕之后,发现它就是会给你新建一个目录,在那个新建的目录中去编译,相当于不会来污染你当前的工作,下次你想要阅读时就打开那个目录就行了。
注意:这些目录会共享同一个.git目录,主目录是.git存放的地方,其他目录都是对于这个目录的链接。
相对“切分支+stash”更安全,相对“多仓库 clone”更高效、更省空间。
三、一些命令
# 查看所有工作区
git worktree list