This problem is almost always caused by using unspecific version numbers in your composer.json, or relying on “dev-master” for too many requirements. While it may work on the day you set up your project, as each project undergoes further development the chance increases that the head commit will introduce an incompatibility.
How to avoid this problem?
If you’ve already gone ahead and set up your requirements using dev-master or loose versioning (e.g. “~1.0.*”), you could manually work through your composer.json to resolve the version numbers by hand. That will take some time, but you will end up with a cleaner and more reliable set of requirements.