Nine years old topic and still the same problem, one click upgrade overwrites all files. Solution is to make your own update, where only changed files are. In principle it is simple, but a lot of steps. Major idea is just take One click upgrade, VERSION COMPARISON, See or hide the list - see the list of all changed files, select and copy list to any text redactor (UPDATE: Just discovered the list was not complete. There were more files changed, than listed in this One click upgrade module! So, be careful.). Make every line as command to copy with making folder also, Linux command cp --parents and your folder name. In sample I made same level folders all and select, so command sample is with three lines as:
cp --parents all/admin/themes/default/package-lock.json select;
cp --parents all/admin/themes/new-theme/js/pages/order/create/product-renderer.js select;
cp --parents all/admin/themes/new-theme/js/pages/order/create/create-order-map.js select;
In text redactor it is quick search and replace process.
With new Prestashop files extracted to all folder you can now run these commands in SSH window, about 30 at a time for checking the errors. When all done run also command
find select -type f | wc -l
results count of files in the folder structure. Compare the count to your list or number in One click upgrade and if the same number, then it is done. You have replicate folder structure of prestashop with only changed files.
Sure there should be easier way also, but I am not programmer...