我们在/var/www/
位置有一个带有WordPress项目的PHP服务器。整个/www/
root在Git中受源代码管理。因此,当我推送新代码时,它会立即部署,我们会获得新的代码。
在某些时候,我们在服务器上使用了图像构建工具,它从我们把它放在某些包中的一些数据生成图像。
/var/www/images/*.png
所以我在那个位置成功生成了图像; 但是当我添加新的更改并再次部署时,git会从包中删除所有这些png
文件。
我厌倦了将此添加到git ignore
,但这无助于解决问题。
答案 0 :(得分:1)
如果我在该位置生成图像,我会得到图像,但是当我添加新的更改并再次部署时,git会从包中删除所有png文件。
如果取决于部署的完成方式(Git 2.3+ has a push to deploy, for instance)
Usually, this is a post-receive
hook,执行
git --work-tree=/path/to/deploy checkout -f -- .
问题在于-f/--force
option from git checkout:
切换分支时,即使索引或工作树与
HEAD
不同,也要继续。 这用于丢弃本地更改。
一种解决方案是:
/path/to/deploy
git checkout -f
这意味着post-receive hook看起来像:
git --work-tree=/path/to/deploy checkout -f -- .
ln -s /path/to/pngs /path/to/deploy/png