我知道这个问题已经被问过一千遍了,但是我真的在尝试找出如何在使用WordPress时充分利用Git。的文章,所有似乎简短地涵盖了该主题。这是我最近阅读的一些最著名的内容。

-版本控制WordPress

-使用Git管理WordPress主题部署

-使用git而不是FTP管理自定义WordPress主题

当前,我的工作流程如下。 >从本地服务器导出WordPress数据库
将WordPress数据库导入远程服务器
通过FTP上传WordPress文件和主题
客户端进行更改
通过FTP下载WordPress文件和主题并导出WordPress数据库从远程服务器
本地替换文件
进行开发更改
通过FTP重新上传,将数据库导出和导入到远程服务器

我意识到Git可以简化此过程。似乎最好的方法是拥有一个.gitignore文件,该文件忽略某些不需要跟踪的目录,并具有本地和远程wp-config.php文件。

但是如何处理数据库?客户通常会进行更改(帖子/页面/插件)。我仍然需要从远程数据库中导出并重新导入到本地服务器中吗?

有人可以在这里为我建议最佳的工作流程吗?然后逐步指导我。

此外,我可能想使用Bitbucket,因为与GitHub不同,它们是免费的私有存储库。

任何帮助将不胜感激。

提前感谢!

评论

怎么样了你知道了吗?这里有同样的问题。

您能否重点解决您的问题?您询问有关git的问题,但随后跳转到数据库,而git本质上不是用于处理这些问题的工具。

我认为您的问题是有效的。我具有相同的工作流程,并且通过与其他开发人员交谈发现它们也具有相同的工作流程。但这确实很耗时,并且为错误提供了很大的空间。我也会对更好的解决方案感兴趣。

#1 楼

我是WP Migrate DB Pro的开发人员之一,想回答@Ennui的问题:

“您知道它运行的db url替换脚本是否考虑了序列化的字符串吗?”

是的,它确实处理序列化数据。实际上,这就是我在2009年开发免费版本的插件的主要原因。抱歉。

评论


现在有50个:)很棒的插件人。

–安德鲁·巴特尔(Andrew Bartel)
13年5月17日在14:57

#2 楼

我对以“非建设性”的态度来结束这一观点投了反对票,因为这似乎是在征求辩论和意见,而不是回答。但是...

这不是我的工作流程,它使我的方法(和答案)与到目前为止的大多数其他答案有所不同。


本地安装WordPress

这是从包含最新稳定版本的本地裸Git存储库中克隆的。
我还保留了一些最新版本的本地副本,
我几乎总是安装这些插件。 >上载到公共登台服务器

该客户端具有访问权限,但无法更改代码,它告诉
数据库编辑将不会传输到生产站点。
这意味着没有理由将代码下载回
开发服务器。
也没有理由重新同步本地数据库


对本地进行更改网站会根据我们的工作人员和客户的反馈。
上载更改
根据需要重复(但阻力越来越大:))
如果我们提供的内容并非总是如此,我们(不是
客户端)将清理登台服务器上的数据库并上传
内容。
通过将本地代码上传到生产站点进行部署。
如果我们创建了内容,则内容从登台站点通过香草导出导出工具并导入到生产站点。这是我唯一的一次移动数据库的步骤,它是使用漂亮的标准工具完成的。如果需要,我将使用Velvet Blues更新URL清理数据库。


结束

基本上,我使客户端远离尽可能多地保留我的东西,直到我们移交网站为止。

代码以一种方式-从本地转移到阶段或生产。它永远不会向相反方向移动。这省去了您的某些步骤,让我省心。我不想因为我的代码修改客户端而受到指责,也不想导入一些被黑客入侵的文件,这是一种非零的可能性。

数据库仅移动一次(如果有的话),这大大减少了问题。因此,我想我可以通过减少或消除移动数据库的需求来管理“数据库移动”问题。它还可以减少可能出现的数据库损坏问题,并减少导入黑客的机会。

确实,我必须配置生产站点(永久链接,菜单等),但这迫使我在生产站点上工作,因此我认为这是一种调试。它可以帮助我确认事情在生产现场是否可以正常进行。

评论


11.结束-您是否从未需要维护/修补/改善WordPress网站?

–西蒙东
17年5月12日下午3:09

#3 楼

https://github.com/nathanielks/Wordpress-Capistrano-Deploy

我还没有尝试过这个,但它声称可以部署一切-包括数据库。

还有一个教程可供使用:
教程第1部分
|
第2部分

#4 楼

看看基岩堆栈。它使用composer来管理Wordpress和第三方插件的版本,还包括用于部署的capistrano和vagrant / ansible用于设置服务器(包括用于开发的本地虚拟服务器)。

#5 楼

最近,我对此进行了大量测试,这是我使用的工作流程,几乎可以满足您的要求:


我使用wp-cli管理wordpress核心并更新wordpress。
我使用composer以及http://wpackagist.org来管理插件和主题依赖项。
我使用git并将核心wp文件放入.gitignore。因此,大多数wp-config.php和子主题文件都位于git中。 >以下是工作流程的完整详细信息http://geekpad.ca/blog/post/maintainble-portable-wordpress-using-composer-wp-cli

#6 楼

关于数据库“克隆”,我使用WP Migrate DB Pro:http://deliciousbrains.com/wp-migrate-db-pro/

这是一项付费服务​​,但收费不高,并且可以轻松地将您的数据库从开发人员拉入或推送到实时服务器,反之亦然。它会更改URL以及其他需要更改的内容。

评论


您是否知道运行的db url替换脚本是否考虑了序列化的字符串?一个简单的更新查询来替换url是不好的,因为它会破坏其中带有URL的任何序列化字符串(除非新URL与旧URL的字符数相同,至少可以说是很少)。这会破坏文本小部件和许多插件。我现在使用此脚本,但是如果它做同样的事情,我会对这个插件感兴趣。

– Ennui
13年5月17日在13:21



我刚刚通过电子邮件发送给开发人员,以回答该问题。我还没有这个需要。

–deadlyhifi
13年5月17日在14:04

我使用此插件满足所有迁移需求,但尚未看到序列化字符串和url替换的任何问题。所有自定义字段的传输都没有问题。请记住,默认情况下它将替换所有内容。这包括用户/密码/等...

–这里是什么
13年5月17日在14:18