Assuming you don't need anything other than the main branch, and don't require all the history locally:
# git clone --single-branch --depth 1 -b main https://git.FreeBSD.org/ports.git /usr/ports
Cloning into '/usr/ports'...
remote: Enumerating objects: 196240, done.
remote: Counting objects: 100% (196240/196240), done.
remote: Compressing objects: 100% (183805/183805), done.
remote: Total 196240 (delta 12629), reused 122619 (delta 5828), pack-reused 0
Receiving objects: 100% (196240/196240), 87.15 MiB | 5.00 MiB/s, done.
Resolving deltas: 100% (12629/12629), done.
Updating files: 100% (159892/159892), done.
Only has to download ~100MB. Expands out on disk to ~ 550MB with 110MB .git/ repository + 440MB of checked-out files — apparent sizes, actual disk usage is higher due to tons of small files.
(Doesn't do anything for reusing the local files, but it needs to download the repo anyway (if you're going to use it to track / update), so the re-creating local files isn't a big additional task.)