It seems you did something non-standard on production, such as swapping two nodes, or move / delete pages around, or perhaps made several of such complex actions, and then not synchronized the tasks in the same order.
Staging expects that if you are using it, you pretty much have one source server and one or more target servers, that is also best practice to follow. You should author and modify content only on one server, and push it to others in a transactional way (by syncing a bulk of tasks that were logged during a specific session).
The only way to re-sync if your metadata is out of sync (unless you want to compare pages one-by-one and detect which particular metadata is out of sync) is really to delete content on production and resync the whole subtree from staging.
If your pages on production have some additional data attached, such as web analytics, message boards, forums etc., you may want to check how NodeAliasPath and NodeGUID columns match between servers. Also check if you are staging the changes to a correct domain (site with the same origin)