如何优化GitHub Pages不同环境下config.js的使用工作流?
几个优化工作流的实用方案
嘿,刚上手GitHub Pages确实会遇到这种分支和部署绑定的小困惑,尤其还要处理不同环境的配置文件,手动重置太麻烦了。分享几个比写PowerShell脚本更优雅的方案,帮你摆脱重复操作:
1. 让Git忽略本地修改的config.js
Git有两个内置命令可以让它“假装”没看到config.js的本地修改,这样你就不用每次提交都手动reset了:
skip-worktree(推荐):适合你这种本地配置和远程仓库版本不同,且长期不想提交本地修改的场景。执行这个命令:
之后Git就会完全忽略这个文件的本地变化,正常执行git update-index --skip-worktree config.jsgit add .、git commit、git push就行,不会把本地的config.js提交上去。如果之后你真的需要修改远程的config.js,可以先取消标记:git update-index --no-skip-worktree config.jsassume-unchanged:和上面类似,但更适合文件不会被远程修改的场景,如果你担心远程仓库的config.js被其他人修改,用skip-worktree更稳妥。
2. 动态加载配置,不用切换文件
既然你是静态HTML/JS站点,完全可以让代码自动识别当前环境,加载对应的配置,彻底告别手动切换config.js的麻烦:
比如在你的入口JS里加一段判断:
// 检测当前环境 const isLocalhost = window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1'; // 动态加载配置 const configScript = document.createElement('script'); configScript.src = isLocalhost ? './config.local.js' : './config.prod.js'; document.head.appendChild(configScript);
然后你可以在本地保留config.local.js(放localhost的client ID),在GitHub Pages部署config.prod.js(放线上的client ID),同时把config.local.js加入.gitignore文件,这样Git就不会追踪它,提交的时候自然不会包含进去。
3. 分支分离策略(适合需要保留不同环境分支的情况)
如果习惯用分支区分环境,可以把master分支作为纯部署分支(只放线上配置),本地开发用dev分支(放本地配置):
- 平时在
dev分支开发,提交所有修改包括本地的config.js - 要部署的时候,切换到
master分支,执行合并命令并忽略config.js的冲突:git merge --no-ff -X ours dev-X ours参数会让合并时优先保留master分支的config.js(也就是线上版本),这样就不会把本地配置带进去,合并后直接push到master就行。
这几个方案都比写PowerShell脚本更省心,推荐先试试第一种或者第二种,完全能解决你每次手动reset的问题~
内容的提问来源于stack exchange,提问作者Robert Lin
相关产品推荐
相关产品推荐

