It's not really as useful as you make it out to be, since PLC code doesn't exist in isolation; there is __usually__ corresponding hardware. Unless you plan on magically "rolling back the hardware" changes as well, rolling back the software isn't all that useful in practice. Even if you can, changes are not made by any one vendor. Plant modifications happen all the time, so it's more often the case that you just end up uploading directly from the controller itself to see what the latest code is. I don't really have a good solution to that.
The exception of course is some very large companies that do everything in house.
There's a science to this, it's called "change management". How do you think Boeing manages a plane with several 1000s of engineers, hundreds of systems and everything needs to work together...
The exception of course is some very large companies that do everything in house.