Structure should be that the master branch is your release branch, development branch is the beta/alpha branch, and each dev has their own branch that feeds into development.
- Develop on your branch
- commit often!
ONE member of your group...
- On the master branch, create and add a gitignore file (gitignore generator)
- Create a
development
branch - Create a branch for each member of your team
- yourself included
- Once this is completed, everyone else can clone the repo and checkout their branch to then be able to complete the merging instructions.
... when you complete a feature or fix a bug...
- make a commit stating your progress
- checkout the development branch and pull in the latest changes from github
git checkout development
git pull
- merge your personal branch into development
git merge [myBranchNameNoBrackets]
- more than likely, you will have merge conflicts. git tries to make this easy with text formatting, but let's face it... it's not easy to understand what it means. Use something like gitkraken to make the process infinitely easier for you.
- commit your resolved conflicts
- push
development
back up to github - checkout your branch again
git checkout [myBranchNameNoBrackets]
- merge
development
into your branch - push your branch changes up to github
- continue working on your contributions
- Use storyboard references liberally and assign specific individuals to be the only ones to make changes to their own storyboards
- merge conflicts involving storyboards are worse than stepping on legos - they WILL happen, but you can reduce your headache by being vigilant about NOT making changes on a storyboard unless you are specifically designated as the owner of that storyboard.