【发布时间】:2021-09-19 23:04:45
【问题描述】:
我无法让 git 忽略我在部署中的 wp-config.php 文件。我使用 git 设置了自动部署(这是一个非常棒的工具,如果您不了解它,您可以阅读它here - 您不需要像文章指出的那样使用 kinsta 托管,尽管您的文件结构可能会有所不同)。
但是每次我推送更改时,它都会覆盖我的wp-config.php 文件,从而导致网站上出现数据库错误。发生这种情况是因为用于部署的 git 挂钩引入了更改,然后检查了任何本地更改。由于这是一个临时站点,它使用生产环境中的 repo,但在 wp-config.php 中具有不同的值,以便连接到它自己的数据库。
到目前为止我已经尝试过:
- 在登台服务器上提交对 wp-config 的更改,因此不会被 git hook 签出
- 在暂存服务器上添加
wp-config.php到.gitignore(我本来应该这样做的) - 将
wp-config.php添加到.gitignore(我本来应该这样做的)以进行开发并推送到登台 - 在
post-receive挂钩中添加一行,以在执行部署后检查对wp-config.php的更改
这是我的 post-receive 挂钩文件(客户端名称替换为 XXXXX):
#!/bin/bash
TARGET="/www/XXXXX_975/public"
GIT_DIR="/www/XXXXX_975/private/XXXXX.git"
BRANCH="master"
while read oldrev newrev ref
do
# only checking out the master (or whatever branch you would like to deploy)
if [[ $ref = refs/heads/$BRANCH ]];
then
echo "Ref $ref received. Deploying ${BRANCH} branch to staging..."
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f
git checkout /www/XXXXX_975/public/wp-config.php
else
echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server."
fi
done
该站点位于public 目录中。 repo 位于不同的目录 private 中,以免被部署覆盖。
这是一个 Wordpress 网站,托管在 Kinsta 上。如果有任何我忘记包含的信息,请告诉我。
谢谢!
【问题讨论】:
-
您的
wp-config.php文件是否已检入存储库? -
嘿@bk2204!你能澄清你的问题吗?
-
您看到的
wp-config.php文件是否覆盖了存储库中签入文件的一部分(也就是说,它被列为git ls-files的一部分),或者它只是在同一个目录,但没有被 Git 跟踪? -
是的,它被 git 跟踪。我提到我追溯添加到 gitignore,但它正在被 git 跟踪。
-
如果你已经添加到
.gitignore,那么备份服务器上的配置文件。之后,使用git rm从 git 跟踪中删除文件。然后部署该提交(这将从服务器中删除文件!)并从备份中手动恢复文件。完成此操作后,git 将不会再接触这些文件(因为它们不再被跟踪,而且.gitignore'd)
标签: git githooks automated-deployment