We also use a shared central repository hosted on GitHub. We try to avoid working directly on the main branch, but instead work on feature branches that are eventually merged back into main when ready.
This article describes the basis of our workflow. We haven't had too many students on programming for the last few years, so merging and conflicts haven't been a big issue.
As for a Git client, if I'm not working from the command line I like to use
SourceTree. It's easy to use with a nice interface while still offering most of the functionality available from the command line.