A hash is a short fixed-length fingerprint computed from a file's contents. Change a single byte anywhere in a multi-gigabyte asset and the hash changes completely. Two files with the same hash have identical contents.
Source control uses this in two places. The first is change detection: rather than comparing file contents to work out what to sync, compare hashes, which is fast and exact. The second is integrity: hash a file before upload and after download, and if the values match, the bytes survived the trip.
That second use matters more than it sounds on a game project. Transfers of multi-gigabyte assets across consumer connections do occasionally corrupt, and a corrupted texture that arrives without complaint is worse than a failed download, because it looks like an art bug and gets debugged as one for a day.
USourceControl uses SHA-256 throughout. Every file is hashed on upload and verified on download, so what you push is provably what comes back. The same hashes drive incremental sync, which is why an unchanged file costs nothing to "sync".