我有一个Web应用程序,我想使用git进行版本控制。我已使用以下策略在服务器上与其他几个站点完成此操作。
$ mkdir /var/git/example.git && cd /var/git/example.git
$ git init --bare
$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/var/www/example.com git checkout -f
$ chmod +x hooks/post-receive
.... add files, commit, push, yada yada
这个过程在我过去做的时候工作正常,但对于这个新网站来说,我有一个新的皱纹。这个新站点生成文件并将它们存储在目录中。该目录可由webroot写入。我们称之为目录:
/var/www/example.com/generatedfiles/
我担心checkout -f
将删除此目录,我将丢失所有生成的内容。我也不想在我的git存储库中使用该内容。
所以,我的问题是如何设置我的post-receive挂钩,以便它单独留下generatedfiles目录,但我仍然可以获得checkout -f
的效率?
答案 0 :(得分:1)
评论中有一些有用的建议,但由于没有人给出答案,我会给出一个。如果任何发表评论的人都在回答,我会将你的评论标记为正确。
@ceejayoz是正确的,如果文件和目录不受版本控制,那么它们不会被checkout -f
@kan和@vpatil是正确的,如果我只是将以下内容添加到repo根目录中名为.gitignore的文件中,则generatefiles目录将不会被覆盖
/generatedfiles