上次部署的服务器
我们在服务器修改了部分文件,如果直接
git pull
就会有问题
git 通灵术使用
git status
查看修改的文件状态- 假如我们服务器的代码 修改了 xx.txt 内容,拉取的时候不想冲突
- 你就
git stash
把它存入一个地方 git status
状态就是空的了- 然后
git pull
下载最新代码 - 恢复刚才藏起来的代码
git stash pop
设置环境变量导致的bug
- 我们设置了
export NODE_ENV=production
- 这样
yarn install
的时候 dev依赖就会被忽略 - 解决办法是
1 | yarn install --production=false |
在服务器执行本地脚本
1 | ssh blog@dev1 "echo hi > /tmp/xxx" |
解决json配置两个环境不一致问题
- 由于json不能改,所以这是一个痛点,因为本地和 生产环境 的配置“不一致”
- 复制
ormconfig.json
内容到ormconfig.sample.json
- 然后
.gitignore
里 忽略ormconfig.json
解决配置文件要在git pull 之后修改的问题
- 在服务器
~/shared/ormconfig.json
这样建立文件 - 然后在你的项目里 通过“软链接” 来分离配置和项目代码
- 项目目录里运行
ln -s ~/shared/ormconfig.json
- 这样你服务器环境的配置文件是 软链接的文件
- 你本地开发可以自己参考
ormconfig.sample.json
建立dev的配置ormconfig.json
- 这样两边就不一致了
补丁包使用
- 我们的
src/entity/User.ts
里有数据库validate操作yarn m:run
数据库迁移时会报错 - 所以服务器和本地的时候,我们都要把对应操作注释掉执行
yarn m:run
迁移数据库,然后在把注释恢复 - 这样就非常的 ”蛋疼“
git create patch from diff
- step01 假如数据库迁移的时候需要的xxx.js文件内容是
1 | aaa |
- step02 而数据库迁移之后,我们xxx.js 的内容是这样
1 | aaa |
- step03 将git diff的内容 完整拷贝到 migrate.patch 文件里
1 | git diff > migrate.patch |
- step04 然后取消掉 migration 要做的文件改动,即 xxx.js内容为
1 | aaa |
- step05 运行补丁,
1 | git apply migrate.patch |
- step06 撤销操作
git reset --hard HEAD