0

0

使用Git发布WordPress插件

王林

王林

发布时间:2023-09-03 14:45:04

|

1633人浏览过

|

来源于php中文网

原创

如果您在 wordpress 存储库上托管了一个插件,那么您将会相当熟悉 svn 及其一些命令。在本教程中,我将向您展示如何使用 git(另一个由 github 普及的版本控制系统)来发布和维护您的插件。


什么是 Git?

Git 和 SVN 都是版本控制系统的示例。 WordPress 的存储库使用后者(如果您有 WordPress 上托管的插件,您将熟悉“签入”以对此存储库进行更改)。它们都允许您跟踪代码的更改,但它们之间的执行方式存在很大差异。

SVN 依赖于代码的单个“中央存储库”(在我们的上下文中:WordPress 插件存储库)。每次您想要编辑插件时,都需要制作本地副本、进行更改,然后将这些更改“签入”到 WordPress 存储库。

Git 是一个分散的版本控制系统。您不仅拥有插件的本地副本,还拥有插件存储库的完整克隆,并包含其所有更改。该存储库现在独立存在于您的计算机上。您可以在本地计算机上提交并跟踪更改、恢复更改或向不同方向“分支”插件。只有当您愿意更新插件时,您才会将更改推送到 WordPress 存储库以将其公开。

在本教程中,我假设您已在 WordPress 插件存储库上托管了一个插件,或者至少您的托管请求已获得批准。如果您不确定如何让 WordPress 托管您的插件,我建议您阅读我们有关如何发布到 WordPress 插件存储库的文章。


使用 Git 相对于 SVN 有哪些优势?

支持和反对使用 Git 而不是 SVN(以及一般的去中心化版本控制系统)有很多争论。其中许多源于 Git 和 SVN 跟踪更改的根本不同方式。 CodeForest 的 Git vs SVN 文章对 Git 和 SVN 进行了精彩、深入的分析,但对于 WordPress 开发人员来说:

  • 离线访问 – 您可以在自己的个人“开发存储库”上进行提交并跟踪提交。仅当您想要公开更改时,才需要访问 WordPress 存储库。
  • 一旦您学会了 Git,就会更容易使用 - 本文将引导您完成在存储库中进行更改和更新所需的基本工作流程。我在底部链接到了一些资源,其中提供了有关使用 Git 的更多详细信息。
  • GitHub – 让我们面对现实吧,这就是我们大多数人听说 Git 的方式。 Git 的去中心化特性使其能够鼓励“社交编码”。您可以在 GitHub 上保留插件的副本,鼓励社区参与并进行改进或扩展,然后您可以将其包括在内。一般来说,向其他开发人员公开您的插件是个好主意。
  • 轻松“分支”您的插件 - 您可以在本地副本上创建“实验”分支来测试可能的新功能,然后如果它们有效,则在发布下一个版本时将它们合并回来插件。

使用 Git 的一个缺点是让它与 SVN 存储库很好地配合。由于 git svn,这实际上并不难,本文就是为了指导您完成它。


第1步下载Git

如果您还没有安装 Git,您需要安装它。 Git 社区书籍和 Pro Git 书籍(如果您是 Git 新手,这两个优秀资源)中详细介绍了如何安装 Git。如何安装 Git 将取决于您的操作系统,以及您可以使用哪些 GUI 程序。在本教程中,我将通过命令行完成所有操作 - 我鼓励您也这样做。在文章的最后,我将推荐一些您可以使用的 GUI 程序,但通常,我只使用它们来帮助可视化存储库的分支。


第 2 步克隆插件的 WordPress 托管存储库

如前所述,使用 Git,您无需“签出”插件的副本 - 您可以克隆存储库,并包含所做更改的历史记录及其所有分支和标签。第 1 步是克隆插件的 WordPress 托管存储库。作为示例,我将根据之前的教程发布一个“帖子类型档案链接”插件。因此(一旦您被 WordPress 存储库接受)打开您的命令行界面,然后导航到您想要存储插件本地版本的位置。我将把它放在一个名为“Plugins”的文件夹中。一旦到达那里,我们想要告诉 Git 在哪里可以找到我们的插件。截至撰写本文时,WordPress 存储库中托管着近 20,000 个插件,并且有超过 500,000 个修订版本。我们不想等待 Git 遍历每一个来找到我们的插件。因此,首先,我们找到插件的起始版本(我们希望它是整个历史记录)。为此,我们获取插件的第一个日志(最初将其添加到存储库时):

svn log -r 1:HEAD --limit 1 http://plugins.svn.wordpress.org/your-plug-in-name

它会思考一段时间,然后你应该看到类似这样的内容:

r520657 | plugin-master | 2012-03-19 03:56:31 +0000 (Mon, 19 Mar 2012) | 1 line

使用Git发布WordPress插件

我的插件的第一个数字“520657”是第一个修订版。我们将在下一个命令中使用它,告诉 Git 克隆我们插件的历史记录。将 XXXXXX 替换为您的修订号。

git svn clone -s -rXXXXXX --no-minimize-url http://plugins.svn.wordpress.org/your-plug-in-name
cd your-plugin-name
git svn fetch
git svn rebase

-s”告诉 Git 期望 SVN 存储库的标准(标签、主干、分支)布局。 '--no-minimize-url' 会阻止它在插件文件夹之外查找。 确保它没有丢失。如果您忽略它,您最终可能会复制整个 WordPress 插件存储库。 -rXXXXXX 告诉 Git 要查找的修订版本。如果你忽略它,Git 将搜索存储库的整个历史记录。修改次数超过 500,000 次。我有一次遗漏了这个,花了大约两个小时。安装完毕后,应该只需要几分钟。

使用Git发布WordPress插件

完成后,您应该会发现它在“插件”文件夹中创建了一个名为“您的插件名称”的文件夹。让我们来探索一下。导航到“您的插件名称”文件夹并运行命令以查看存在哪些“分支”:

git branch -a

这将列出所有分支,本地和远程。唯一的本地分支应该是 Master (星号表示这是您所在的分支)。其他分支是“主干”,如果有的话,每个标签都有一个分支(SVN 将标签视为分支,但 Git 比这更聪明)。

转到“本地文件夹”“plugins/your-plugin-name”,您应该会看到插件文件(如果有)。在其中创建或编辑任何文件之前,我们将创建一个单独的分支来处理。

更新:由于 Neerav 和 John Eckman 在下面的评论中指出的问题,上述命令已更新。上面的代码现在反映了 Stephen Harris 的建议。


第3步(可选)推送到GitHub

使用 Git 的好处之一是您可以轻松地在 GitHub 上维护插件的版本。这使得其他开发人员更容易访问您的插件,他们可能会提出改进建议,甚至进行自己的修改,您可以将其拉入您自己的存储库中。如果您已经设置了 GitHub,此时您可能希望将插件推送到您的帐户。为此,首先在 GitHub 帐户上为自己创建一个新存储库,然后将其作为远程分支添加到本地存储库:

git remote add origin git@github.com:<your-user-name>/<your-repo-name>.git

your-user-name”是指您的 GitHub 用户名,“your-repo-name”是指您在其上创建的存储库的名称GitHub。然后你只需推送本地存储库:

git push origin master

第 4 步编辑插件:工作流程概要

我们将创建一个新的分支“work”。我们将在这个分支内更改插件、进行更改并添加功能等。这意味着我们的“主”分支保持其原始状态。这允许我们切换回 Master 分支,并再次分支。特别是,假设当您在“工作”分支中开发一些新功能时,您的插件中发现了一个主要错误。您可以切换回您的“主”分支(其中不包括您当前正在处理的任何功能),提交错误修复,然后将其推送到 WordPress 存储库。然后,您可以切换回工作分支并从上次中断的地方继续。 (注意:Git 不会创建文件的副本 - 您的本地文件夹中始终只有一组文件。这些文件包含的内容取决于您所在的分支。)

事实上,为要添加到插件中的每个新功能创建一个分支是个好主意。完成后,您只需将它们合并回主分支即可。如果这导致任何“冲突”,系统会要求您手动解决这些问题。

首先创建一个名为“work”的分支:

git branch work

然后“签出”(转到)分支“工作”:

git checkout work

使用Git发布WordPress插件

一条消息将告诉您您已切换到“工作”分支。现在,使用您最喜欢的文本编辑器打开本地文件夹中的插件文件(如果还没有任何文件,则创建它们)。创建一些文件后,您可能想查看更改了哪些文件。您可以使用简单的命令来完成此操作:

git status

这将列出已跟踪未跟踪文件的更改。可能存在您不希望 Git 跟踪的文件(例如临时文件),但如果您向该文件夹添加了任何新文件,则需要告诉 Git 跟踪它们。您可以使用以下命令执行此操作:

git add <file-name>

我在本地文件夹中创建了两个文件“post-type-archive-links.php”和“metabox.js”,因此我添加了他们告诉 Git 跟踪他们。您必须确保您正在跟踪您的自述文件。

使用Git发布WordPress插件

DBShop开源商城系统
DBShop开源商城系统

DBShop开源商城系统,使用PHP语言基于Laminas(Zendframework 3) + Doctrine 2 组合框架开发完成。可定制、多终端、多场景、多支付、多货币;严谨的安全机制,可靠稳定;方便的操作管理,节约时间;清晰的权限分配,责任分明;便捷的更新处理,一键搞定;丰富的插件市场,扩展无限。

下载

您还可以查看自上次提交以来的更改(这是 GUI 程序变得非常方便的地方)

git diff

一旦您想要将更改提交到本地存储库:

git commit -a -m "Did abc to xyz"

提供提交中包含的更改的(详细)消息。

使用Git发布WordPress插件

在进行更改的过程中,您可以(并且应该)尽可能频繁地提交 - 但以合乎逻辑的方式,最好为您所做的每件“事情”进行一次提交。您还应该确保您的提交中没有明显的错误。 “撤消”一次提交既快速又轻松:您可以通过执行另一次提交来逆转前一次提交来完成此操作:

git revert HEAD

(系统会提示您输入一条消息来描述此提交。)


第 5 步提交到 WordPress 存储库

假设您现在想要将所有更改推送到 SVN 存储库。在这样做之前,我们需要记住一些事情。 Git 鼓励您经常提交,对于开发而言,这样做是一个很好的实践。不过,您的 WordPress 插件存储库可供分发。它不需要每一次提交。事实上,正如 Otto(WordPress 核心贡献者)警告的那样,它也确实不想要它:

“如果我发现你[分别推送每个提交],那么我将禁止你访问 WordPress.org。SVN 只需要提交你的最终工作版本,而不是数百个的整个历史记录。您使用 Git 所做的更改。将您的更改扁平化为单个提交。”

为了避免这种情况,当我们准备好推送到 WordPress 存储库时,我们会将所有提交合并为一个提交。有几种方法可以做到这一点。我们将把工作分支中的更改合并(并同时压缩)到主分支中。然后我们所有的更改都会作为主分支上的一次提交出现。然后我们删除工作分支并将主分支推送到插件的 SVN 主干。

首先,我们要切换回 Master 分支:

git checkout master

然后将工作分支更改压缩并合并到主分支中:

git merge --squash work

如果对主分支进行了更改,则合并中可能会出现冲突。系统会提示您在合并完成之前手动解决这些冲突。合并后,提交更改(这一提交将包含我们工作分支的所有提交):

git commit -a -m "Made changes a,b,c,d"

最后,我们删除工作分支

git branch -D work

使用Git发布WordPress插件

如果您有多个分支想要合并,那么您可以对每个分支执行此操作。还有一些替代方法可以扁平化您的历史记录(例如交互式变基),我不会介绍这些方法。

此时,如果您愿意,您可以将最新更改推送到您的 GitHub 帐户:

git push -u origin master

要推送到 WordPress 存储库,我们首先确保我们的本地存储库是“最新的”:

git svn rebase

然后,Git 将获取您的 subversion 存储库,并将其中的任何更改与我们刚刚所做的更改合并。通常情况下,WordPress 存储库不应有任何更改,因此您应该看到以下消息:当前分支 master 已更新

现在我们可以将更改推送到 WordPress 存储库

git svn dcommit

然后,Git 可能会提示您输入 WordPress.org 凭据。输入后,您的更改将提交到 WordPress 存储库。很快您就会收到来自 WordPress 存储库的一封电子邮件,通知您提交情况。

使用Git发布WordPress插件


第 6 步标记新版本

目前,这些更改将放在后备箱中。如果我们想标记插件的新版本怎么办?为插件创建下一个版本时,您应该更新自述文件,以便稳定标签指向您的新版本(例如“2.0”)。您还应该在 your-plug-in-name.php 文件中更新插件的标头信息。如果您忘记执行此操作,只需执行上述过程并进行这些更改即可。

一旦您的“主干”完全更新(包括最新版本信息),我们只需在 WordPress 存储库中创建新标签即可:

git svn tag "2.0"

这会将 trunk 中的所有内容复制到 tags/2.0 中(通常使用 svn cp trunktags/2.0 在 SVN 中实现的效果)。

使用Git发布WordPress插件

如果您想在本地存储库中标记版本:

git tag -a 2.0 -m"Tagging 2.0"

第 7 步(可选)在 GitHub 上标记新版本

与我们对 WordPress 存储库所做的类似,确保我们的存储库同意,然后推送我们的更改和标签:

git pull --rebase origin master 
git push origin master 
git push origin --tags

Git 命令的有用资源

  • Git 参考(有一个关于“如何像 Git 一样思考”的很好的部分)
  • Git 社区书籍
  • Pro Git 书籍
  • Git Ready(与其说是指南,不如说是“片段”集合)
  • SVN 到 Git 速成课程(如果您已经使用 SVN 一段时间,会有帮助)
  • Git Magic(Git 的友好介绍)

最后,还有一些可能会派上用场的 Git “备忘单”:此处和此处。


GUI Git 程序

窗口

  • TortoiseGit(与 Windows 资源管理器集成良好的流行程序)
  • msysgit

苹果电脑

  • Git 塔
  • GitHub for Mac(来自为您带来 GitHub 的人)

Linux / 跨平台

  • GitG(这是我使用的)
  • QGit
  • Git Cola(跨平台)

相关文章

WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

16

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

23

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

75

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

95

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

218

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

420

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

168

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

222

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

33

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 4.1万人学习

麻省理工大佬Python课程
麻省理工大佬Python课程

共34课时 | 5.5万人学习

【web前端】Node.js快速入门
【web前端】Node.js快速入门

共16课时 | 2.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号