WordPress + Git = ♡

VersionPress is a free and open-source plugin that brings the full power of Git to WordPress. Its key strength is that it version-controls not just files but also the database.

VersionPress plugin

Key features include:

All changes tracked in Git

VersionPress automatically creates Git commits for both file and database changes, in natural language.

"Undo button for WordPress"

Plugins break, people make mistakes; sometimes, you just want that good old Undo button.

Branching and merging

Git took the pain out of file merging; VersionPress does the same for WP database.

Teamwork via GitHub, GitLab, etc.

You can push to GitHub, your colleagues pull and make the site fully functional in seconds. MySQL is a cache.

Ridiculously efficient backups

VersionPress can store hundreds of full site snapshots to just a few megabytes.

User-friendliness

We care about UX deeply. VersionPress should not be a low-level tool for geeks.

“A ground-breaking plugin for all developers.”

With that being said, VersionPress is not without its challenges. The two biggest are plugin compatibility and hosting requirements:

VersionPress needs to understand site's data and which actions can be taken. We're building a database of plugin definitions but right now, you'll likely need to write some yourself.

Shared hosts usually don't allow execution of external binaries via proc_open, which VersionPress relies on. Partly a reason why we built better hosting as part of the process 😉.

These challenges will take some time to get sorted. That's why we also offer a more practical solution that is VersionPress.com – many of the same benefits in a cloud-hosted environment where we guarantee functionality.

How VersionPress compares to VersionPress.com staging?

 VersionPressVersionPress.com workflows
Distribution modelWordPress pluginHosted service
StabilityDeveloper preview (beta)Production-ready
Target audienceDevelopersAll site owners
HomeGitHubmy.versionpress.com
Merging capabilities
Plugin compatibility
Git modelGit runs inside the siteGit runs externally