Git部署:删除推送文件时删除文件

时间:2016-12-30 06:12:49

标签: deployment git hook

当我推送分支时,我有一个 post-receive 钩子来在 webroot 中部署我的应用程序。 这是我的剧本:

#!/bin/bash
while read oldrev newrev ref
do
    if [[ $ref =~ .*/master$ ]];
    then
        echo "Master ref received.  Deploying master branch..."
        git --work-tree=/var/www/mywebroot --git-dir=/home/myuser/myrepo checkout -f master
    else
        echo "Ref $ref successfully received.  Doing nothing."
    fi
done

问题在于,当我推送任何删除任何文件的提交时,删除的文件不会在webroot中删除。

1 个答案:

答案 0 :(得分:1)

您可以在git checkout行后面添加(使用git clean):

git -work-tree=/var/www/mywebroot --git-dir=/home/myuser/myrepo clean -fd

这将删除未跟踪的文件和文件夹。