It's standard practice everywhere to deploy from a git (or at least some form of version control) repository, but the method of doing the deploy is pretty much whatever you feel like.
If you have workspaces/folders that store each version that has been deployed, it's fine to just push up your working copy to production.
One pattern is to tag your releases with git and check those out directly (git checkout v1.0.0) on the server, or to use a git hosting server's facilities to download a tarball of your tag.
For example, you can download a tarball of the tag v1.0.0 from github like so:
https://github.com/<user>/<project>/archive/v1.0.0.tar.gz There's no performance overhead to running a single (or many; checked out working copies introduce no overhead) git repo on a windows server, but be careful not to expose the .git folder if you clone directly.
Also, never force push to your master (or equivalent) branch, or you're asking for trouble.