title: How can I get Emacs to revert all unchanged buffers when switching branches in git?
body: <p>Often, when I switch branches in git, if the files are open in emacs, then emacs asks if I want to revert them (as it thinks they've changed on disk) even though the contents are identical.</p>
  
  <p>Firstly I'd like to find a way for emacs to not ask me about it at all if the contents on disk are identical to those in the buffer.</p>
  
  <p>Secondly I'd like a command that reverted (without query) all my open buffers that have no unsaved changes, and queried me about those that do have unsaved changes.</p>
  
  <p>Alternatively, I'd be open to suggestions about other solutions, ways of working, etc I could try.  I'm fairly happy writing emacs-lisp if people can give me pointers on where to start.</p>
  
  <p>PS I'm using Aquamacs on OSX if that matters.</p>
  
  <p>Edit:</p>
  
  <p>Well, I've found the revbuffs package to be pretty much what I need.  Certainly enough to stop me wanting to try and write anything new myself.  (I mapped revbuffs to Cmd-R which works quite nicely. Kind of similar to Cmd-R in other Mac apps).</p>
  
  <p>Global-auto-revert mode would have been a perfectly fine solution, and I wish I could choose two answers.  I prefer revbuffs simply because of a, possibly irrational, feeling of wanting to be in control of what happens.</p>
  
  <p>I'd kind of guessed that if I accessed git from within emacs, then it could probably be handled easier, but I currently prefer accessing git through the commandline.  (I haven't quite been using emacs long enough to make it my operating system).  I will investigate magit a little more thoroughly though.</p>
  
  <p>Edit2:</p>
  
  <p>I've been using magit for a year now and can highly recommend it for dealing with git from within emacs.  However I still use revbuffs whenever I do a rebase outside of emacs.</p>