GitHub or Perforce?

The problem with Visual Studio Team Foundation Server is that it requires Windows servers, and there are no clients for other OSes (like Linux, for your servers.)

Personally, I use a git repository over SSH and plain git. No GitHub or GitLab needed, unless you want a fancy web GUI for pull requests and such.
I use putty with pageant for my SSH client, which means I have plink.exe as my GIT_SSH link.

Set up a git repository on any server you have command line access to:

[FONT=Courier New]plink account@example.com git init --bare repository.git

Setting up a local folder to be git tracked (Windows shell):

[FONT=Courier New]git init .
copy \users\you\documents\standard-gitignore.txt .gitignore
git commit -a -m “first commit”
git remote add origin account@example.com:repository.git
git push -u origin master

Pulling new changes:

[FONT=Courier New]git pull -r

Pushing committed changes:

[FONT=Courier New]git push