我目前正在测试通过 Git 部署网站,但无法理解以下内容:
目前,我的 DEV 环境中有一个裸远程仓库,带有一个接收后挂钩,它将 GIT_WORK_TREE 设置为我的 webroot。我使用“git push DEV master”之类的语法从本地仓库推送到那里。这很好用。但是,我也有一个“开发”分支,我将其推送到 DEV(接收后挂钩设置为“git checkout -f [BRANCH_NAME]”),这也很好用。
我的问题是针对以下情况:假设我在 DEV 上发现了一个错误(从“开发”分支推送)但我没有时间修复它(也许那天有客户评论)。我希望能够做一个“git push DEV master”(master 分支对 DEV 进行了最后一次无错误推送,并且是当前 DEV 上的开发提交的祖先)并完成它。但是,当我这样做时,远程仓库告诉我“一切都是最新的!” 我认为这是有道理的,但我想做的是强制 git 从“主”分支接受推送并触发 post-receive 钩子,这对于正确部署 Web 资产是必要的。
我尝试直接进入 ssh 中的远程仓库并尝试从那里签出 master,但它告诉我我需要一个工作树来执行此操作(因为它是裸露的,我假设)。
这样做的正确方法是什么?如果可能,我想避免进行还原或变基,但也许这是唯一的方法。