While working on some larger enterprise Drupal projects we make extensive use of feature branches. Note: See A Successful Git branching model. When changing branches (e.g. git checkout) we've often run into issues where the code in that branch does not match up well with the database. This often happens if a branch includes a database update, new module, etc. and we aren't ready to merge that into the other feature branches.
We had several workarounds that weren't very efficient.