升级打怪
Git
git worktree
示例
1. 创建一个裸仓库
git clone --bare https://github.com/your-org/your-monorepo.git your-monorepo
cd your-monorepo
2. 为每个分支创建工作树
# 主开发工作树
git worktree add ./main main
# 代理 A 的功能分支
git worktree add ./feature-auth feat/auth
# 代理 B 的 bug 修复分支
git worktree add ./fix-api fix/api-error
每个工作树都是一个完整的检出,拥有自己的文件,但它们都共享同一个 .git 对象存储。
3. 启用全局虚拟存储
在你的仓库中的 pnpm-workspace.yaml 文件中添加 enableGlobalVirtualStore: true:
packages:
- 'packages/*'
enableGlobalVirtualStore: true
4. 在每个工作树中安装依赖项
cd main && pnpm install
cd ../feature-auth && pnpm install
cd ../fix-api && pnpm install
第一次执行 pnpm install 会将软件包下载到全局存储中。 在其他工作树中进行后续安装几乎是瞬间完成的,因为它们只会创建指向同一存储的符号链接。
Ref
Git 合并代码,是使用 Rebase?还是 Merge?
上个礼拜,团队中有人使用 merge 的方式合并代码,我在本地 pull --rebase 拉取代码时,发现本地代码消失了🫠
最后,通过 reflog 找回了代码。
对于这个事情,有点吃惊😱,以往百试不爽的 rebase 竟然也会翻船。
带着问题,找元宝分析了原因,总结一下:
- 如果分支只有你一个人用,可以安全地 rebase
- 如果分支是共享的,使用 merge 避免历史混乱
- 在开发分支上建议使用 git pull --rebase之前,先确认没有其他人在这个分支上有未同步的工作
附件📎:
OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
重置 Git 代理
git config --global --unset http.proxy
git config --global --unset https.proxy
Ref
OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443解决方案