0

我的当前工作流程设置在我的 Web 服务器上带有一个 git repo,并带有一个 post-receive 钩子,用于检查我的分支master及其staging各自的文件夹,master作为我的实时站点和staging我的暂存站点。

一切都很好,直到我重命名一个文件,如果我将一个文件夹js更改javascript为例如,当挂钩检查我的分支时,它将创建该文件夹javascript但保留该文件夹js及其之前提交的内容。我确定 git 已经检测到文件已被重命名,因为当我在本地签出分支时,文件已经消失了。

这是我的接收后挂钩:

#!/bin/sh
GIT_WORK_TREE=/var/www/mysite/live git checkout -f master
GIT_WORK_TREE=/var/www/mysite/staging git checkout -f staging
4

2 回答 2

0

当您使用-f强制签出分支时,更改可能未正确提交。请先尝试git commit,以便它正确提交更改,然后尝试签出分支。

我认为这种方法可能有效

于 2013-06-06T10:54:42.547 回答
0

我当前的接收后挂钩现在看起来像这样:

#!/bin/sh
GIT_WORK_TREE=/var/www/mysite/live git clean -df
GIT_WORK_TREE=/var/www/mysite/live git checkout -f master
GIT_WORK_TREE=/var/www/mysite/staging git clean -df
GIT_WORK_TREE=/var/www/mysite/staging git checkout -f staging

这将删除所有不再被 git 跟踪的文件,并以递归方式进行。如果我重命名文件或文件夹,它将在下一次推送到服务器时被“清除”。如果这是错误的或有更好的方法,我可能会接受替代答案,但现在这是我的问题的解决方案。

于 2013-07-02T11:16:21.953 回答