Where I work we are still using TFS, with TFVC. I'm hoping to get my colleagues to adopt Git, but that's a slow process.
One really bad habit of my some of my colleagues, when checking in code changes, is to check in all their changes, ignoring what's already in TFS. This is a function of Visual Studio. When performing a check-in, if Visual Studio detects a conflict, and if the developer chooses to review the conflicts, there is a button in Visual Studio to accept all of the user's changes and ignore the changes in TFS. They always choose that option, blowing away other people's work. I've tried to change that behavior the last 5 years. I now realize they're just going to do it that way. Honestly, they'd be better off working alone, because of this behavior of removing other developer's changes.
I'm wondering, when Visual Studio works with a Git repo at a remote, like Azure DevOps Services or GitHub, does it give the developer a choice, when resolving conflicts, to just shove all their changes in the push, or does it insist upon the user performing a pull, before it allows them to push changes to the remote?