我正在寻找有关为PHP项目的生产/开发环境正确设置Git的指导。我正在尝试创建一个,即使在寻找答案几天后,我仍然对正确的做法一无所知。
我有:
在服务器上安装了Git,与我的客户机上相同。我有两个分支-开发和生产。计划是测试dev分支上的所有内容,然后合并这些分支并将其部署到生产中。
但是,在此设置中如何正确使用Git到处都找不到。我将分支推送到服务器上的存储库,然后根据分支(dev或prod)将文件部署到特定文件夹。
我正在执行此操作
git clone --shared --branch dev myproject.git /var/www/vhosts/dev.mydomain.com/httpdocs/
rm -rf /var/www/vhosts/dev.mydomain.com/httpdocs/.git
它第一次在文件夹为空时起作用,但是git不允许在其中已有文件的情况下克隆到该文件夹。当然,我可以从文件夹中删除所有内容,但这似乎不正确,尤其是在生产服务器上。
因此,主要问题是-如何仅更新已修改的文件而不接触其余文件?还是我做错了,应该完全不同?我已经阅读了git手册以及许多其他专门用于git的网站,但是要么我太愚蠢,要么那里没有这个问题的答案。
答案 0 :(得分:1)
假设您已为同一仓库建立了两个不同的分支(dev
,prod
):
git clone --shared --branch dev myproject.git /var/www/vhosts/dev.mydomain.com/httpdocs/
git clone --shared --branch prod myproject.git /var/www/vhosts/prod.mydomain.com/httpdocs/
您可以通过拉出每个目录轻松地更新文件夹而无需将其删除:
cd /var/www/vhosts/dev.mydomain.com/httpdocs/ && git pull
cd /var/www/vhosts/prod.mydomain.com/httpdocs/ && git pull
只需确保您的存储库中没有覆盖本地更改的文件即可。一个例子是配置文件。您应该创建一个由git管理的配置文件config.ini.example
,然后将config.ini
行添加到同一文件夹中的.gitignore
文件中,这样您的本地配置就不受git的管理。 / p>
从侧面讲,从安全角度考虑,建议使用不同的物理机器来服务您的服务的开发和生产版本。如果资源允许,您应该为此目标。