Object Versioning
To enable Object Versioning on a bucket:
$ gsutil versioning set on gs://BUCKET_NAME

To check whether Object Versioning is enabled on a bucket:
$ gsutil versioning get gs://BUCKET_NAME

To list both live and noncurrent versions of an object and view their generation numbers:
$ gsutil ls -a gs://BUCKET_NAME

To disable Object Versioning on a bucket:
$ gsutil versioning set off gs://BUCKET_NAME

Object Holds
To automatically place an event-based hold on each new object added to a bucket:
$ gsutil retention event-default set gs://BUCKET_NAME

To view whether a bucket places event-based holds on new objects by default:
$ gsutil ls -L -b gs://BUCKET_NAME

Disabling a default event-based hold
$ gsutil retention event-default release gs://BUCKET_NAME

To place a hold on an object in your bucket:
$ gsutil retention HOLD_TYPE set gs://BUCKET_NAME/OBJECT_NAME

To release a hold on an object in your bucket:
$ gsutil retention HOLD_TYPE release gs://BUCKET_NAME/OBJECT_NAME
