Git post receive签出到网站未清除文件夹
我在我的web服务器上使用git repo设置了当前的工作流,带有一个post接收钩子,将我的分支机构Git post receive签出到网站未清除文件夹,git,Git,我在我的web服务器上使用git repo设置了当前的工作流,带有一个post接收钩子,将我的分支机构master和staging签出到各自的文件夹中,master是我的实时站点,staging是我的staging站点 如果我将文件夹js更改为javascript,例如,当钩子签出我的分支时,它将创建文件夹javascript,但保留文件夹js及其以前提交的内容。我确信git已经检测到这些文件被重命名,因为当我在本地签出分支时,这些文件就消失了 这是我的收帖钩: #!/bin/sh GIT_WO
master
和staging
签出到各自的文件夹中,master
是我的实时站点,staging
是我的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
当您使用-f强制签出分支时,更改可能没有正确提交。请先尝试
git commit
,以便它正确提交更改,然后尝试签出分支
我认为这种方法可能有效我当前的post receive钩子现在看起来是这样的:
#!/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不再跟踪的所有文件,并以递归方式执行。如果我重命名一个文件或文件夹,它将在下一次推送到服务器时被“清除”。如果这是错误的,或者有更好的方法,我可能会接受另一个答案,但目前这是我的问题的解决方案。您是否使用“-f”强制签出?是的,仅根据本教程:这可能是我问题的根源吗?因此我的挂钩应该提交,然后签出每个分支?但是,从我的回购协议本地副本中,我已经提交了,然后推送新的提交?是的,它应该提交,否则更改将不会推送到分支机构,您可能最终得到一致的结果。因此,请确保钩子在切换新分支之前始终提交更改