sponsor Vim development Vim logo Vim Book Ad

fugitive.vim : A Git wrapper so awesome, it should be illegal

 script karma  Rating 1786/510, Downloaded by 9468    Comments, bugs, improvements  Vim wiki

created by
Tim Pope
script type
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 :Gedit (and :Gsplit, :Gvsplit, :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 changes.

Bring up the output of git-status with :Gstatus. Press `-` to add/reset a file's changes, or `p` to add/reset --patch that mofo. And guess what :Gcommit does!

:Gblame brings up an interactive vertical split with git-blame output. Press enter on a line to reblame the file as it stood in that commit, or`o` to open that commit in a split.

:Gmove does a git-mv on a file and simultaneously renames the buffer. :Gremove does a git-rm on a file and simultaneously deletes the buffer.

Use :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.

Add %{fugitive#statusline()} to '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.

The preferred submission method for bug reports, feature requests, and patches is GitHub issues: http://github.com/tpope/vim-fugitive. I also accept email.
install details
Extract in ~/.vim (~\vimfiles on Windows). I highly recommend grabbing directly from http://github.com/tpope/vim-fugitive as this version tends to fall out of date.

rate this script Life Changing Helpful Unfulfilling 
script versions (upload new version)

Click on the package to download.

package script version date Vim version user release notes
fugitive.zip 1.2 2011-04-29 7.0 Tim Pope Support :Gmove in a directory.
Provide :Gbrowse to open code on GitHub or in git-instaweb.
Provide :Gwq to :quit after :Gwrite.
Provide :Gsdiff to do a horizontal diff.
Map ds in :Gstatus to do a horizontal diff.
Map <C-N> and <C-P> in :Gstatus to cycle between files.
Map `-` on headings in :Gstatus.
Map dp in stage conflict to do the right thing.
Point 'tags' at .git/tags.
Windows fixes. [Michael Geddes]
fugitive.zip 1.1 2010-03-21 7.0 Tim Pope Much better windows support ('shellslash' no longer required).
Delete blame buffers when closed.
Pass :Gblame flags along to git-blame.
Fix duplicate "Signed-off-by" lines.
Finish pending commit even if exiting Vim.
Allow double quotes in :Git and :Ggrep arguments.
`D` in :Gstatus shows a diff.
fugitive.zip 1.0 2010-02-15 7.0 Tim Pope Initial upload
ip used for rating:

If you have questions or remarks about this site, visit the vimonline development pages. Please use this site responsibly.
Questions about Vim should go to the maillist. Help Bram help Uganda.
SourceForge.net Logo