如何将文件从不同的Git分支部署到服务器上的不同文件夹?

时间:2018-11-04 12:21:39

标签: git

我正在寻找有关为PHP项目的生产/开发环境正确设置Git的指导。我正在尝试创建一个,即使在寻找答案几天后,我仍然对正确的做法一无所知。

我有:

  1. IDE(NetBeans)
  2. 生产服务器
  3. 我想用于开发目的的同一服务器上的
  4. 子域。我知道这可能不是最好的解决方案,但至少现在它可以工作,后来我打算将其移至另一台服务器。

在服务器上安装了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的网站,但是要么我太愚蠢,要么那里没有这个问题的答案。

1 个答案:

答案 0 :(得分:1)

假设您已为同一仓库建立了两个不同的分支(devprod):

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>

从侧面讲,从安全角度考虑,建议使用不同的物理机器来服务您的服务的开发和生产版本。如果资源允许,您应该为此目标。

相关问题