【问题标题】:Pull from GitHub remote only copies tracked files, overwrites core Magento files从 GitHub 远程拉取只复制跟踪的文件,覆盖核心 Magento 文件
【发布时间】:2014-01-22 01:29:58
【问题描述】:

我已经非常广泛地使用 Git 来实现从 GitHub 到生产的简单本地工作流程,但我第一次需要设置一个还包括开发服务器的设备。

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

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

但每次我安装 Magento、设置存储库、添加 GitHub 远程并拉取文件时,它都会覆盖我的核心 Magento 文件并仅复制 Git 跟踪的文件。

【问题讨论】:

标签: git magento github gitignore


【解决方案1】:

您必须将生产环境直接复制到开发环境。对新的开发环境进行拉取不会检索所有文件(因为 git 不会跟踪所有内容)。

将 Magento 复制到开发服务器:

  1. 压缩生产服务器上的所有 Magento 文件,然后将它们复制到开发服务器。
  2. 将生产数据库克隆到开发服务器
  3. 将文件解压到开发服务器上
  4. 使用开发数据库详细信息修改app/etc/local.xml
  5. 编辑数据库中的core_config 表,将base_url 值更改为开发网址。
  6. 删除 var/cachevar/sessions 文件夹中的所有内容。

一旦您确认 Magento 已设置并在新的开发服务器上正确运行,您就可以开始设置 Git 以推送到它。我个人使用位于我从本地环境推送到的实际服务器上的裸存储库。

设置开发服务器:

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

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

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

    chmod +x hooks/post-receive
    

上面的内容是允许你推送到裸仓库,并自动将更改应用到 Magento 文件。

配置本地 git 实例

现在您要配置本地 git 以便能够推送到远程开发服务器。

  1. 添加远程仓库:

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

    git push development master
    

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 2017-12-11
    • 2015-06-16
    相关资源
    最近更新 更多