If you read this SO answer, you will realize the way Git ignore files is system-dependent.
the gitignore
manpage clearly says that the glob will be passed un-altered to the system's fnmatch
library function
So what OS and Git distro are you using (Unix, or Msysgit on Windows)?
Because on Windows, the '**
' does not work very well (if at all).
Plus, make sure your *.rst files were not already added to the cache before you declared them in the .gitignore file. They would need to be removed from the cache (and the purged cache committed) before .gitignore works as intended (see also this blog post)