从GitHub远程拉取只复制跟踪文件,覆盖核心Magento文件

时间:2014-01-22 01:29:58

标签: git magento github gitignore

我已经将Git用于简单的本地到GitHub到生产工作流程,但是我第一次需要设置一个还包括开发服务器。

我目前在生产服务器上安装了Magento。我已经为此添加了一个.gitignore文件,并成功将跟踪的文件保存到GitHub存储库。我还将跟踪的文件保存到本地存储库。我目前能够在本地进行更改,将它们推送到GitHub,然后将它们拉到生产服务器。到目前为止,非常好。

现在,我想设置另一台服务器(称为“开发”),其中包含自己的Magento安装,其中包含当前部署在生产服务器上的所有相同插件和代码。

但每次我安装Magento,设置一个存储库,添加GitHub遥控器,并拉取文件,它会覆盖我的核心Magento文件,并只复制Git跟踪的文件。

1 个答案:

答案 0 :(得分:1)

您必须将生产环境直接复制到开发环境中。拉动新的开发环境并不会检索所有文件(因为git没有跟踪所有文件)。

将Magento复制到开发服务器:

  1. 在生产服务器上压缩所有Magento文件,然后将它们复制到开发服务器。
  2. 将生产数据库克隆到开发服务器
  3. 将文件解压缩到开发服务器
  4. 使用开发数据库详细信息修改app/etc/local.xml
  5. 编辑数据库中的core_config表,将base_url值更改为开发网址。
  6. 删除var/cachevar/sessions文件夹中的所有内容。
  7. 验证Magento在新开发服务器上设置并正确运行后,您可以开始设置Git以推送它。我个人使用位于实际服务器上的裸存储库,我从本地环境推送。

    设置开发服务器:

    在开发服务器上,执行以下操作(使用ssh连接)

    1. 在Magento目录之外创建一个目录,该目录不可公开访问。例如~/git/development。请记住,~是指进行连接的用户的根目录。
    2. 使用shell / ssh,导航到您创建的文件夹以保存裸git repo:
      cd /home/myuser/git/development
    3. 使用:git init --bare
    4. 创建裸仓库
    5. 创建一个收到后文件,当您按下该文件时,该文件将由git执行。这将允许git自动将更改应用于您的开发环境 vi hooks/post-receive
    6. 粘贴以下内容(将路径更改为绝对Magento目录):

      #!/bin/sh
      GIT_WORK_TREE=/path/to/magento git checkout -f
      
    7. 保存文件。然后在文件上运行以下命令以设置正确的权限:

      chmod +x hooks/post-receive
      
    8. 以上操作允许您推送到裸存储库,并自动将更改应用于Magento文件。

      配置本地git实例

      现在,您希望将本地git配置为能够推送到远程开发服务器。

      1. 添加远程仓库:

        git remote add development ssh://user@serverdomain.com/~/git/development
        
      2. 现在测试将主分支推送到开发服务器:

        git push development master
        
      3. 如果您没有将.ssh密钥添加到开发服务器,则可能需要输入密码。

        如果操作正确,您现在可以简单地将更改推送到您的开发环境,并且在此之后网站将立即更新。