There’s a private filter you can (but shouldn’t) access:
Defined in wp-includes/revision.php:
/**
* Filter the list of fields saved in post revisions.
*
* Included by default: 'post_title', 'post_content' and 'post_excerpt'.
*
* Disallowed fields: 'ID', 'post_name', 'post_parent', 'post_date',
* 'post_date_gmt', 'post_status', 'post_type', 'comment_count',
* and 'post_author'.
*
* @since 2.6.0
* @since 4.5.0 The `$post` parameter was added.
*
* @param array $fields List of fields to revision. Contains 'post_title',
* 'post_content', and 'post_excerpt' by default.
* @param array $post A post array being processed for insertion as a post revision.
*/
$fields = apply_filters( '_wp_post_revision_fields', $fields, $post );
So you could write a function like
add_filter( '_wp_post_revision_fields', 'add_my_own_fields', 10, 2 );
function add_my_own_fields( $fields, $post ) {
$fields['meta_field'] = 'Meta Field';
}
Where meta_field
is the key for your meta that you want revisioned and 'Meta Field'
is what displays as the heading in the revisions UI.
Please note that this is private and it’s use is not intended for theme or plugin developers. More elaborate solutions would be needed to avoid this problem, and you may be better off with a plugin that can handle those problems as well.