Git post接收挂钩。移动除少数文件夹外的所有内容

Git post接收挂钩。移动除少数文件夹外的所有内容,git,githooks,Git,Githooks,我已经在我的服务器上实现了一个post-receive钩子(git是用git-init--bare初始化的)。钩子是通过以下方式创建的: cd repo/hooks/ touch post-receive chmod 777 post-receive 然后在我的文件中: #!/bin/sh GIT_WORK_TREE=/var/www export GIT_WORK_TREE git checkout -f 现在,当我推送本地更改时,所有内容都会移动到/var/www文件夹。问题是我不想移动

我已经在我的服务器上实现了一个post-receive钩子(git是用
git-init--bare
初始化的)。钩子是通过以下方式创建的:

cd repo/hooks/
touch post-receive
chmod 777 post-receive
然后在我的文件中:

#!/bin/sh
GIT_WORK_TREE=/var/www
export GIT_WORK_TREE
git checkout -f
现在,当我推送本地更改时,所有内容都会移动到/var/www文件夹。问题是我不想移动某些文件夹。例如,我有
folder1
folder2
,我不想移动它们。目前,我手动删除这些文件夹后推,但这是一个荒谬的工作,我想自动化它

我使用的是
ubuntu14.04
/
git2.1

推送后,我将手动删除这些文件夹

你可以把这一步放在钩子上

另一种方法是尝试和(因为你可以)


您能告诉我如何在我的钩子中添加此步骤(推送后删除这些文件夹)吗?@salvadodali simply adin g您在接收后脚本(签出步骤后)中手动执行的命令:作为
rm-Rf/var/www/folder1
。明白了。但是如果我设置稀疏签出,这些文件夹甚至不会被移动?@salvadodali是的,这就是稀疏签出的想法:不签出所有的东西。如果我在裸回购中这样做,我需要做什么不同的事情吗?当我执行第一个命令
echo”/*>.git/info/sparse checkout
时,我没有得到这样的文件或目录
echo "/*" > .git/info/sparse-checkout
echo "!folder1/" >> .git/info/sparse-checkout
echo "!folder2/" >> .git/info/sparse-checkout