1. Pointers to the data are created when the data is saved to the object storage, when it is still uncommitted. Only during a commit will the ranges/Meta ranges be updated to reflect a new version and a commit ID will be created. Commits and merges are metadata operations: they create updated range and metarange objects containing data pointers.
2. commits are immutable - once you commit, you get back a commit id that you can use to view and query the data as it existed when the commit was created
3. currently, empty commits are not allowed. if no changes were applied, an error will be returned by lakeFS stating there are no changes to the target branch