The most obvious benefit to using git as version control is being able to revert back to previous working version of your code. Before I learned to use git, there were times that I started re-writing code for a new feature, just to break everything that worked fine before. With git, I'm able to restore the file to a previous version in order to more easily figure out where I went wrong. Another thing I find useful about git is the ability to coordinate with team members on projects in parallel. I can work on one branch while my partner works on another and we are able to push and pull our code remotely without having to worry about copy and pasting or downloading files from each other.
One thing git merge does not solve is when two developers make changes to a file, but not to conflicting lines of code. What I mean by this is if two developers both modify line 15 of a program in different ways, git merge will find that problem and flag it as a conflict. However, if one developer writes line 15 to print a variable and line 14 defines it. But developer 2 changes the variable name or deletes line 14, we're going to run into problems that wouldn't necessarily be caught by git merge. Even though there is no merge conflict, the code will still not compile or work as expected.