I find vivado will often break my project (usually the axi bus config breaks, and I have not found any way to fix it). The best solution I have found is to use TCL to regenerate the project. You can generate a TCL script of your existing project. I have not tried it, but you might be able to use normal version control tools like git with the TCL script - the usefulness will depend on if things stay in the same order after an update.