I'm not going to lie to you; fugitive.vim may very well be the best Git wrapper of all time. Check out these features:
View any blob, tree, commit, or tag in the repository with
:Gtabedit, ...). Edit a file in the index and
write to it to stage the changes. Use
:Gdiff to bring up the staged
version of the file side by side with the working tree version and use
Vim's diff handling capabilities to stage a subset of the file's
Bring up the output of
git status with
reset a file's changes, or
mofo. And guess what
:Gblame brings up an interactive vertical split with
output. Press enter on a line to reblame the file as it stood in that
o to open that commit in a split.
:Gmove does a
git mv on a file and simultaneously renames the
:Gremove does a
git rm on a file and simultaneously deletes
:Ggrep to search the work tree (or any arbitrary commit) with
git grep, skipping over that which is not tracked in the repository.
:Glog loads all previous revisions of a file into the quickfix list so
you can iterate over them and watch the file evolve!
:Gread is a variant of
git checkout -- filename that operates on the
buffer rather than the filename. This means you can use
u to undo it
and you never get any warnings about the file changing outside Vim.
:Gwrite writes to both the work tree and index versions of a file,
making it like
git add when called from a work tree file and like
git checkout when called from the index or a blob in history.
'statusline' to get an indicator
with the current branch in (surprise!) your statusline.
Oh, and of course there's
:Git for running any arbitrary command.