title: Why does TFS allow a single changeset to affect multiple branches? If there isn't a very good reason, can this be prevented?
body: <p>It has recently happened that a coworker, after completing some minor changes to the Stable branch of our solution, accidentally checked-in some of his unfinished work on the Development branch as well. TFS bundled it all up as a single changeset.</p>
  
  <p>While the mistake was easily detected and fixed, I feel like I am missing something critical here. Why would TFS's "Pending changes" page allow you (and, worse, offer by default) to create a single changeset containing everything you've done on every branch?</p>
  
  <p>It seems to me that a changeset should consist of changes to one <em>and only one branch</em>, so you can more effectively manage/merge/rollback them as necessary, without affecting other branches. If you have been working on multiple branches at the same time, upon checking-in it should ask you to insert multiple descriptions, and create multiple changesets as a result.</p>
  
  <p><em>Assuming my reasoning is at least valid</em> (if not necessarily universal), is there a way to configure TFS so that users may not check-in changes to more than one branch at a time?</p>
  
  <p>EDIT: Failing that, I would appreciate a way to at least set the 'Pending Changes' page to put all changed files by default in the 'Excluded' section, so users will need to manually include them before checking in (which would help them notice any accidental changes).</p>