To support the retrieval of objects that are deleted or replaced, Cloud Storage offers the Object Versioning feature.
Versioning can be enabled or disabled at bucket level. When Versioning is enabled and if live object is deleted it becomes non concurrent object version. If you delete non concurrent object version, then object is deleted.
Older versions are identified by (object key + generation number). Versioning increases storage cost since multiple versions of same objects are maintained. Each noncurrent version of an object is charged at the same rate it was when it was live.
Read more https://googlecloudtutorials.com/google-cloud-storage-free/