【发布时间】:2021-09-09 14:21:44
【问题描述】:
我有一个关于在我们客户网站上的 git 存储库被清除后如何开始使用自动部署的问题。
repo 发生了什么? 客户希望在其托管服务提供商上使用一项功能,他们可以在其中对临时站点进行复制编辑并将其“推送”到实时站点。他们推送编辑后,git repo 消失了。
自动部署:我们正在使用 git 挂钩进行部署。这是一个很好的how-to。基本上,您可以使用git push <environment> <branch> 在本地进行部署。当您运行此命令时,git 会运行以下 post-receive 挂钩(出于隐私考虑,已删除站点名称):
#!/bin/bash
TARGET="/www/[sitename]_571/public"
GIT_DIR="/www/[sitename]_571/private/[sitename].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 production..."
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f
else
echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server."
fi
done
远程服务器的结构是:
/www/[站点名称]_571/ -> 私有 -> [sitename].git -> 钩子
-> 公开 -> 网站文件 + .git
让 git 重新回到现场的破坏性最小的方法是什么,以便我们可以重新开始进行部署?
谢谢!
【问题讨论】:
-
我在发布后注意到实时服务器实际上确实拥有完整的 git repo。我的错误是期望
git log会返回任何东西,而我所拥有的设置永远不会。不确定我的问题是否仍然有价值 - 如果合适,模组可以删除。 -
一个 repository 是自包含的(在
.git目录中),由提交和辅助数据组成。 签出的工作树是提取一个提交的结果;它不包含恢复存储库所需的信息。所以你不能从提交到存储库,除非你仍然有存储库,或者它的克隆或备份。
标签: git githooks git-deploy