Deploying to a git repository on your VPS

For the main site I have a bare git repository set up on the VPS. I push to this repo when I make a change to the site, which automatically updates the directory containing the site that is served by nginx. I set this up many years ago, but it went something like this DO tutorial.

In short, create a bare repo somewhere on your server (via git init --bare). Then inside the hooks/ directory, create a post-receive file with the following contents:

git --work-tree=/var/www/ --git-dir=/var/repo/ checkout -f

Here work-tree is the directory contianing the site, and git-dir is the location of the bare repo you created. Make this file executable.

On your local machine, create a new repo (with git init) and add the bare repository you just created as a remote: git remote add origin ssh://, substituting your user and server address. Now you should be able to commit locally and push those changes to the remote server. These will then be updated in the work-tree directory, which you point to in your nginx (or other web server) configuration file.