If I told you, I'd have to shoot you ...
For whatever reason, that kind of information is a closely-held secret among the developers of the Vivado GUI environment, which saves all kinds of files for its own purposes — presumably to save time by avoiding the execution of process steps that don't need to be repeated. Unfortunately, it is so bad at keeping track of the dependencies that it frequently uses outdated files, causing all kinds of issues that are very hard to track down. This is especially the case if you use any of Xilinx's own IP.
I have no idea why the whole thing is so poorly documented; it seems to me that it would be in Xilinx's own best interest to make their tools easier to understand and use.
I strongly recommend, if you want to keep your sanity, that you adopt the non-GUI development process — a.k.a. "Non-Project Batch Flow" — in which everything is kept in memory except for the files that you explicitly choose to write out and put under source control.
Start by reading UG892, and follow the links from there to the additional supporting documentation.