Git worktree

2025/10/18

一、背景

之前我在看 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