Problem
You suffer from CVS / SVN habits in your workflow, and especially from thinking of the โbig patchโ.
Decision
Git has a very cheap branching model and interactive staging. The result of this is that you have to work with function branches and treat non-integration branches as a patch queue.
So, instead of "code, code, code, code, push, pull, merge, scream" you should do something more manageable:
- Send a lot. Create a branch for each mini-function or shift.
- Capture tons of small atomic changes in your private branches.
git add -p
is your friend. - Restore your private branches against your integration branch before joining it.
- Click on your integration branch every time you have a full set of changes or the completion of a function.
If you start to treat Git as a patch and branches as queues of patches, you will get a workflow in which people can select or discard small changes between repositories without receiving migraines. The forked Git model makes things easier, but it depends on your team to break up the work into pieces of size.
source share