One of the key guidelines for an agile development team is that everyone agrees on what it means to say a particular task (typically a user story implementation) is “done”. I really like the definition given in InfoQ: Version Control for Multiple Agile Teams (via Jurgen Appelo)

So when a team member says that a story is Done and moves the story card into the Done column, a customer could run into the room at that moment and say “Great Lets go live now”, and nobody in the team will say “no, but wait”.

The rest of the article is a good model of how to manage branches in a medium-complex development environment; well worth the read for anyone working in a group.