Xcode tracks files with an XML "project file." So if you add files in one branch and remove files in another branch, it often puts this project file into a conflicted state. Resolving conflicts in this file is really difficult — lots of confusing paths and SHAs all mixed together. If you don't resolve conflicts correctly, the entire project refuses to open.