2026年11月12日

2026年11月12日

Git Updater: Update WordPress Plugins from GitHub (Headers, Tags)

This article is a localized edition of the Japanese original. Read the Japanese original

Git Updater is a plugin that lets plugins and themes hosted on GitHub and other Git hosts be updated through WordPress's normal update mechanism. Your own plugins that are not in the WordPress.org directory, or themes built for clients, can be updated from the "Updates" screen just like any other plugin.

This article covers installing Git Updater, preparing the repository, releasing new versions and handling private repositories. The content was checked against Git Updater 14.5.0 (as of November 2026) and the official knowledge base.

What Git Updater does and does not do

First, let's be clear about its role.

  • What it does: it checks the repository named in the plugin header and, if there is a new version, shows the update in WordPress's "Dashboard" → "Updates" and in the plugin list. You update it the same way as any other plugin, and WP-CLI's wp plugin update works too
  • What it does not do: it does not turn your site files into a Git repository, and it does not commit or push changes made on the site. It is strictly a tool for "receiving releases from a repository"

Out of the box it supports GitHub; with separate API plugins (add-ons) it also supports Bitbucket, GitLab, Gitea and Gist. You can install the add-ons from the "Add-Ons" tab on the Git Updater settings screen.

Git Updater 14.5.0 requires WordPress 5.9 or later and PHP 8.0 or later (as stated in the plugin header, as of November 2026).

Step 1: Install Git Updater

Git Updater is not in the WordPress.org plugin directory. Get it from its GitHub distribution.

To install it from the admin screen:

  1. Download the ZIP from the latest GitHub release (https://github.com/afragen/git-updater/releases/latest)
  2. Upload the ZIP via "Plugins" → "Add Plugin" → "Upload Plugin"
  3. Click "Activate"

To install it by hand, put the extracted folder in wp-content/plugins/ with the name git-updater.

With WP-CLI, you can install it with this officially documented command.

wp plugin install --activate https://github.com/afragen/git-updater/archive/master.zip

Once activated, a settings screen is added under "Settings" → "Git Updater" (on multisite, under "Settings" in Network Admin).

Step 2: Add headers in the repository

For each plugin you want Git Updater to manage, add GitHub Plugin URI to the header of the main PHP file. For a theme, add GitHub Theme URI to style.css.

<?php
/**
 * Plugin Name:       My Custom Plugin
 * Description:       A plugin that bundles features for our own site
 * Version:           1.2.0
 * Requires at least: 6.5
 * Requires PHP:      8.1
 * GitHub Plugin URI: https://github.com/your-account/my-custom-plugin
 * Primary Branch:    main
 */

What each header means:

Header Required Content
Version Required The current version. An update appears when the remote value is greater than the local one
GitHub Plugin URI Required In the form https://github.com/owner/repository-name. Do not add .git at the end
Primary Branch Required if the primary branch is not master If you use GitHub's default main, write main. Without it, checks fail with an error
Release Asset Optional When set to true, the ZIP attached to a release is used as the package

Primary Branch is often forgotten. New GitHub repositories use main as the default branch, so in most cases you need it.

Step 3: Release a new version

By default Git Updater looks at the primary branch, but if tags exist it uses the latest tag as the update package. In practice, pair "raise Version in the header" with "add a tag with the same number," like this.

# After changing Version in the main PHP file to 1.2.1
git add my-custom-plugin.php
git commit -m "Release 1.2.1"
git tag 1.2.1
git push origin main
git push origin 1.2.1

Make the tag name the same string as the Version header. On branches other than the primary branch, tags are ignored and the latest commit on that branch is used.

On the site, Git Updater checks the repository periodically, and if there is an update it appears in "Dashboard" → "Updates." To check right away, click "Refresh Cache" on the Git Updater settings screen, or clear the cache with the commands below.

wp git-updater cache delete
wp plugin list --fields=name,version,update,update_version

When the update column shows available, you can update as usual from the admin screen or with wp plugin update my-custom-plugin.

Plugins that need a build step

If the repository does not include Composer's vendor directory or built JavaScript and CSS, a package made by zipping the repository as is will not work. In that case, attach a built ZIP to the release and add Release Asset: true to the header. The release must be tagged, and when there are multiple attachments, name the asset in the form repository-name-*.zip.

Install a new plugin from a repository

For a plugin that is not on the site yet, you can install it from the "Install Plugin" tab on the Git Updater settings screen by entering the repository URL. With WP-CLI, use the install-git subcommand.

# Install from a public repository
wp plugin install-git https://github.com/your-account/my-custom-plugin

# Install a specific branch
wp plugin install-git https://github.com/your-account/my-custom-plugin --branch=develop

When you want to try a development branch on a staging environment, you can also switch branches (enable "Enable Branch Switching" on the settings screen first).

wp plugin branch-switch my-custom-plugin develop

Private repositories and licensing

To update from a private repository, you need a GitHub access token.

  1. Create a token on GitHub. With a fine-grained token, you can limit it to the target repository and give it only read access to Contents and Metadata
  2. Enter the token on the GitHub tab of the Git Updater settings screen
  3. For repositories owned by an organization, use a token issued by the organization

Licensing is where you need to be careful. According to the official announcement (April 2023), Git Updater merged its paid features into the core plugin as of v12.0.0, so it works without a license, but "authenticated API requests," which use tokens, require a paid yearly license. The 14.5.0 code also deletes saved tokens when there is no license (as of November 2026).

In other words, you need to buy a license to use private repositories. If you only use public repositories, you can use it without a license. Check the price and terms on the official site (https://git-updater.com/).

Note also that the unauthenticated GitHub API has a request limit. On sites that manage many plugins, or where many sites check from the same IP address, checks may fail.

Operational notes

  • Test on staging first: before tagging a new version, check the update and behavior on a staging environment. Once you tag, the update appears on every site you manage at its next check
  • Keep Version and tags in sync: relying on manual steps leads to forgotten tags or forgotten header bumps. Changing Version and tagging in one go with a release script or GitHub Actions is safer
  • Back up before updating: as with any plugin, back up files and the database before updating
  • Plugins with the same name on WordPress.org: even if WordPress.org has a plugin with the same slug, a plugin with GitHub Plugin URI is updated from its Git repository. This prevents it from being accidentally replaced by the public version, but you need to know where each plugin is updated from

Summary

  • Git Updater lets plugins and themes hosted on GitHub and elsewhere be updated from WordPress's normal update screen
  • The plugin itself is not on WordPress.org, so install it from a GitHub release or with WP-CLI
  • In the repository, add GitHub Plugin URI, Version and, if needed, Primary Branch to the header
  • Release new versions by raising Version and adding a tag with the same number
  • Private repositories need a token and a paid license (as of November 2026)

Questions about WordPress? The publisher of this site is based in Japan and replies in Japanese. Contact (Japanese)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲