Instead, dotfim remove --all should be an option.. Should that remove all currently synced files? Or all = all in git repository?
Alternatively, dotfim remove --local <dotfile> could achieve that a file is only removed locally from the sync list.
So unsync would do remove --local --all? Meaning the local dotfim will never sync any files.
This will require to keep a managed list of which hosts are tracking a file (or are not tracking, e.g. tracking the exceptions)!
Further, unsyncing a file will keep the 'local' and 'private' sections in the gitfile, so that when syncing it again, dotfim will be able to recreate the previous state. Only when a file is removed the 'local'/'private' sections are removed.
Removing a file should issue a prompt telling the user that the file will no longer be recreated as it is when added again (note: local/private sections remain in dotfile, and git sections in gitfile). (... sections=passages)