工作区|鲜为人知的Git功能——Git Worktree工作树( 二 )


通常做法是为运行测试保留一个额外的工作树 。 但是工作树有一个限制就是一个分支只能拉一个工作树 。 可以通过创建临时分支来解决这个问题 , 如下所示:
git checkout -b TEMP/branch feature/branch
此处使用TEMP前缀来强调该分支是临时的 。 当在原始分支上提交更改时 , 可以方便的使用git merge feature/branch同步分支 。
比较多个版本有时 , 需要比较一个项目的某两个版本 , 但仅用diff无法做得到 。 可能需要同拉两个版本逐个比对 , 甚至需要同时运行本 。 或者一个复杂的功能恰好写了一半 , 无法确定从那个地方做标记对比 , 这时可以通过先前的版本或者任何commit提交来拉工作树操作 。
在其他分支上工作 , 而不会影响当前的工作副本也许我们需要在其他分支上工作 , 但是当前的工作目录混乱不堪 , 也无法使用git stash来保存状态 。 根据项目的不同 , 切换分支有可能还会产生不良的副作用(例如 , 导致IDE重新生成索引) 。 这时候就只能使用工作树来解决 。
使用工作树快速验证项目每个人都可能遇到过构建失败的经历 , 可能是因为你搭档忘记提交一些必须的配置或.gitgnore设置的太宽泛了等等 。 而代码可以很好的在它的电脑上运行 , 到你这就挂了 , 则可能是由于可能缺少某些文件 。 这时候就可以使用工作树拉一个干净的副本做测试验证所有需要包含都已经添加了 。 只有从创建新工作树开始 , 才能可靠地工作 。
限制不能多个工作树对应同一个分支前面提到了过了 , 这是工作树的一个限制 , 只需拉一个临时分支就ok 。
不适用于子模块目前使用子模块的存储库无法利用工作树 。
总结本文给大家介绍了一个非常实用的git功能——工作树 。 该功能简练而好用 , 绝对是一个人见人爱 , 人见人用的五星级好功能 。 犹豫什么呢 , 先用先受益!