No extra tools (just git), no symlinks.
So in my vimrc folder, I've got a work file, a school file, a home file, and a base file (which applies everywhere). Then I have a bash script that stitches all the relevant chunks together into a cohesive file for a given location. It can even do sub-locations by adding underscores to the name. E.g. 'work_nas' will produce a file consisting of the base, work and work_nas files, concatenated together.
This all sits in a private git repo, and I just manually copy the output files to wherever they belong whenever there's an update to them. I've been thinking for a while about writing a script to copy them into place, but GNU stow looks pretty interesting.
Any change I make to a dotfile then shows up on any other machines.
Besides that, I don't see how a better way to do it.
https://github.com/RichiH/vcsh
I have separate repos for SSH, Bash, VIM, and other stuff (like .inputrc).
EDIT: The biggest problem, for me, is that since they are all dotfiles, they are invisible to normal ls operations within the stow directory. It's a minor nit, but it can be quite annoying to run up against.
Yes, it took an initial investment but now it just works everywhere and maintenance is low.
(Some people say git repos in clouds sync are bad, but I have had zero problems with them over the years.)