先说一下场景
今天提供更新包给浦发,UAT 环境启动异常,原因是我把一些正在开发的内容也打包了进去。解决的方式当然很简单,只要把我正在开发的内容剔除掉就可以了。
但是,实际情况是我正在开发的内容,不仅新增了文件,还在原有的文件上做了一些修改。完全地剔除,就只能把这些被修改的文件回退或者暂存,可是这样很麻烦(个人觉得)。
不是很好的解决方式
因为每次提交更新包都会有记录,并且这次修改的内容很少(只有一个文件),所以我直接把上一次的更新包解压,然后把本次更新过的文件再放进去覆盖。
理想的解决方式
虽然上面的方式是解决了问题,但是总感觉很不优雅,且很容易出错。巧合的事情来了,正好看到某个著名博主的post中提到的git worktree
命令,完美地匹配我所遇到的这个场景。
摘录一下 AI 给出的解释和说明
1 | git worktree 是一个强大的 Git 命令,它允许您在同一个仓库中管理多个工作树。这意味着您可以同时在同一个项目的不同分支上工作,而无需切换分支或克隆多个仓库。 |
然后我试用了一下git worktree
命令:
git worktree add -b develop-temp ../ibot-spdb-dev-temp
它的作用是基于develop
分支创建一个新的本地分支develop-temp
并检出到指定目录,然后就可以在新的目录下愉快地修 bug、打包、更新,而不会影响正在开发的分支。当然,在修复了 bug 后也应该要记得在原有分支上保持同步。最后,确认一切都完成了之后,可以删除掉新建的分支以及新建的目录。
下面是完整的git worktree
命令示例:
1 | 新增工作树 |
其他收获
在用了上述的命令后,我想验证一下新建目录和原有目录的文件差异。本来想使用一些命令行工具或者 app 的,但是用了一下 IDEA 后,发现它自带的 diff 工具已经很好用了,截图展示一下