I have an existing list where I would like to make some of its columns available at the site level. I am working in SharePoint 2013 on prem.
No, there is no way to promote a field like that. You need to:
- Create your site column
- Add it to your list
- Copy metadata from old column to new column
- Add new column to any desired views
- Delete old column
Another approach would be to create a site lookup column to the desired field in this list. This lookup column could be used across the site.
This article explains how to do it via csom: https://code.msdn.microsoft.com/office/Convert-Sharepoint-28e28d4d
The short answer is that you would have to recreate them. Given that you're using 2013 on prem you could use a tool like SharePoint Manager to capture the declarative CAML and then turn them into "site columns" that you could deploy using visual studio... but that's a ton of work that would probably be done faster with powershell or a third party tool. Furthter, once you create site columns they have different Guids so for all intents and purposes they are different columns and you would then have to copy the data from the old columns into the new columns. This can easily be done by using a tool like ShareGate but that may not be available to you, so your next best alternative would be powershell.