最近在更新服务器 SSL 证书时,遇到了一个比较常见的问题: 新的证书文件已经放到了项目目录:
nginx/cert/***********.key
nginx/cert/***********.pem
但是执行提交时,Git 却提示:
nothing to commit, working tree clean
也就是说,Git 认为当前项目没有任何变化。 这通常是因为:现在解压出来的这两个文件,内容和 Git 仓库里现有的文件是一模一样的。
检查了目前的证书文件,它的有效期到 2026年7月19日,现在解压出来的可能还是那套证书,所以 Git 检测不到内容变化。
如何强制更新并触发 GitLab 流水线?
如果确定现在的证书是更新的(或者想通过重新运行流水线来确保生产环境同步了最新的文件),可以尝试以下方法:
方法 A:强制提交(推荐)
如果文件内容没变,但仍想触发流水线,可以做一个“空提交”:
在项目根目录下运行
git commit --allow-empty -m "chore: force update SSL certificates and trigger deploy"
git push origin main
方法 B:检查是否真的替换成功
- 手动删除
nginx/cert/下的.key和.pem。 - 重新从
.zip包里解压。 - 运行
git status。如果还是显示clean,说明内容确实没变。