Spent many years on Subversion and Mercurial before moving to Git.
I agree that it may be complex if you don't take the time to understand the fundamentals.
I made the mistake to jump right at it on a very large project thinking my experience with other non distributed systems would be enough.
So I had to take a step back and dedicate some time to read documentation including visual examples of the most common situations I encounter.
Merging and resolving conflicts are those of two situations where I struggled the most particularly when working with sub branches in large projects (5+ developers) with a very fast pace of development.
Once you understand the fundamentals (you can confidently draw on paper the current and future state of the tree after your changes) Git is not difficult IMO and 99% of the time you can work with a dozen of commands if you have discipline to use standards and do frequent housekeeping.
If you let changes and branches go for two long without committing, merging and deleting them, never tag and release, write poor commit messages and don't reference issue numbers, lack naming conventions, submit dirty PRs and let PRs sit for days and weeks before approval, etc, then the problem isn't Git.
I agree that it may be complex if you don't take the time to understand the fundamentals.
I made the mistake to jump right at it on a very large project thinking my experience with other non distributed systems would be enough.
So I had to take a step back and dedicate some time to read documentation including visual examples of the most common situations I encounter.
Merging and resolving conflicts are those of two situations where I struggled the most particularly when working with sub branches in large projects (5+ developers) with a very fast pace of development.
Once you understand the fundamentals (you can confidently draw on paper the current and future state of the tree after your changes) Git is not difficult IMO and 99% of the time you can work with a dozen of commands if you have discipline to use standards and do frequent housekeeping.
If you let changes and branches go for two long without committing, merging and deleting them, never tag and release, write poor commit messages and don't reference issue numbers, lack naming conventions, submit dirty PRs and let PRs sit for days and weeks before approval, etc, then the problem isn't Git.