123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- *fugitive.txt* A Git wrapper so awesome, it should be illegal
-
- Author: Tim Pope <vimNOSPAM@tpope.org> *fugitive-author*
- License: Same terms as Vim itself (see |license|)
-
- This plugin is only available if 'compatible' is not set.
-
- INTRODUCTION *fugitive*
-
- Install in ~/.vim, or in ~\vimfiles if you're on Windows and feeling lucky.
- Vim 7.2 is recommended as it ships with syntax highlighting for many Git file
- types.
-
- If you're in a hurry to get started, here are some things to try:
-
- In any file in your repository, run |:Gedit| HEAD. Press <CR> to jump to the
- current branch. Press <CR> again to jump to the top most commit. Keep using
- <CR> to explore parent commits, trees, and blobs. Use C in a tree or blob to
- get back to the commit.
-
- Edit a file in the work tree and make some changes. Use |:Gdiff| to open up
- the indexed version. Use |do| and |dp| on various hunks to bring the files in
- sync, or use |:Gread| to pull in all changes. Write the indexed version to
- stage the file.
-
- Run |:Gstatus| to check your repository's status. Use "-" to stage and reset
- files and "p" to add/reset --patch them. Invoke |:Gcommit| to commit your
- changes.
-
- Run |:Gblame| in a work tree file to see a blame in a vertical split. Press
- <CR> on any line to reopen and reblame that file as it stood in that commit.
- Press o or O on any line to inspect that commit in a split or a tab.
-
- Run |:Ggrep| to search the work tree or history. Run |:Gmove| to rename a
- file. Run |:Gremove| to delete a file.
-
- COMMANDS *fugitive-commands*
-
- These commands are local to the buffers in which they work (generally, buffers
- that are part of Git repositories).
-
- *fugitive-:Git*
- :Git [args] Run an arbitrary git command. Similar to :!git [args]
- but chdir to the repository tree first.
-
- *fugitive-:Gcd*
- :Gcd [directory] |:cd| relative to the repository.
-
- *fugitive-:Glcd*
- :Glcd [directory] |:lcd| relative to the repository.
-
- *fugitive-:Gstatus*
- :Gstatus Bring up the output of git-status in the preview
- window. In addition to standard motions, you can
- use <C-N> and <C-P> to jump from filename to
- filename. Press C to invoke |:Gcommit|. Press D to
- |:Gdiff| the file on the cursor line, or ds to
- |:Gsdiff|. Press - to stage or unstage the file on
- the cursor line. Press p to do so on a per hunk basis
- (--patch). All of D, -, and p have a different,
- sensible (and hopefully intuitive) behavior when
- invoked on a heading rather than a file name.
-
- *fugitive-:Gcommit*
- :Gcommit [args] A wrapper around git-commit. If there is nothing
- to commit, |:Gstatus| is called instead. Unless the
- arguments given would skip the invocation of an editor
- (e.g., -m), a split window will be used to obtain a
- commit message. Write and close that window (:wq or
- |:Gwrite|) to finish the commit. Unlike when running
- the actual git-commit command, it is possible (but
- unadvisable) to muck with the index with commands like
- git-add and git-reset while a commit message is
- pending.
-
- *fugitive-:Ggrep*
- :Ggrep [args] |:grep| with git-grep as 'grepprg'.
-
- *fugitive-:Glog*
- :Glog [args] Load all previous revisions of the current file into
- the quickfix list. Additional git-log arguments can
- be given (for example, --reverse). If "--" appears as
- an argument, no file specific filtering is done, and
- commits are loaded into the quickfix list.
-
- *fugitive-:Gedit* *fugitive-:Ge*
- :Gedit [revision] |:edit| a |fugitive-revision|.
-
- *fugitive-:Gsplit*
- :Gsplit [revision] |:split| a |fugitive-revision|.
-
- *fugitive-:Gvsplit*
- :Gvsplit [revision] |:vsplit| a |fugitive-revision|.
-
- *fugitive-:Gtabedit*
- :Gtabedit [revision] |:tabedit| a |fugitive-revision|
-
- *fugitive-:Gpedit*
- :Gpedit [revision] |:pedit| a |fugitive-revision|
-
- *fugitive-:Gread*
- :Gread [revision] Empty the buffer and |:read| a |fugitive-revision|.
- When the argument is omitted, this is similar to
- git-checkout on a work tree file or git-add on a stage
- file, but without writing anything to disk.
-
- :{range}Gread [revision]
- |:read| in a |fugitive-revision| after {range}.
-
- *fugitive-:Gwrite*
- :Gwrite Write to the current file's path and stage the results.
- When run in a work tree file, it is effectively git
- add. Elsewhere, it is effectively git-checkout. A
- great deal of effort is expended to behave sensibly
- when the work tree or index version of the file is
- open in another buffer.
-
- :Gwrite {path} You can give |:Gwrite| an explicit path of where in
- the work tree to write. You can also give a path like
- :0:foo.txt or even :0 to write to just that stage in
- the index.
-
- *fugitive-:Gwq*
- :Gwq [path] Like |:Gwrite| followed by |:quit| if the write
- succeeded.
-
- :Gwq! [path] Like |:Gwrite|! followed by |:quit|! if the write
- succeeded.
-
- *fugitive-:Gdiff*
- :Gdiff [revision] Perform a |vimdiff| against the current file in the
- given revision. With no argument, the version in the
- index is used (which means a three-way diff during a
- merge conflict, making it a git-mergetool
- alternative). The newer of the two files is placed
- to the right. Use |do| and |dp| and write to the
- index file to simulate "git add --patch".
-
- *fugitive-:Gsdiff*
- :Gsdiff [revision] Like |:Gdiff|, but split horizontally.
-
- *fugitive-:Gvdiff*
- :Gvdiff [revision] Identical to |:Gdiff|. For symmetry with |:Gsdiff|.
-
- *fugitive-:Gmove*
- :Gmove {destination} Wrapper around git-mv that renames the buffer
- afterward. The destination is relative to the current
- directory except when started with a /, in which case
- it is relative to the work tree. Add a ! to pass -f.
-
- *fugitive-:Gremove*
- :Gremove Wrapper around git-rm that deletes the buffer
- afterward. When invoked in an index file, --cached is
- passed. Add a ! to pass -f and forcefully discard the
- buffer.
-
- *fugitive-:Gblame*
- :Gblame [flags] Run git-blame on the file and open the results in a
- scroll bound vertical split. Press enter on a line to
- reblame the file as it was in that commit. You can
- give any of ltwfsMC as flags and they will be passed
- along to git-blame.
-
- :[range]Gblame [flags] Run git-blame on the given range.
-
- *fugitive-:Gbrowse*
- :[range]Gbrowse If the remote for the current branch is on GitHub,
- open the current file, blob, tree, commit, or tag
- (with git-web--browse) on GitHub. Otherwise, open the
- current file, blob, tree, commit, or tag in
- git-instaweb (if you have issues, verify you can run
- "git instaweb" from a terminal). If a range is given,
- it is appropriately appended to the URL as an anchor.
-
- :[range]Gbrowse! Like :Gbrowse, but put the URL on the clipboard rather
- than opening it.
-
- :[range]Gbrowse {revision}
- Like :Gbrowse, but for a given |fugitive-revision|. A
- useful value here is -, which ties the URL to the
- latest commit rather than a volatile branch.
-
- :[range]Gbrowse [...]@{remote}
- Force using the given remote rather than the remote
- for the current branch. The remote is used to
- determine which GitHub repository to link to.
-
- MAPPINGS *fugitive-mappings*
-
- These maps are available in Git objects.
-
- *fugitive-<CR>*
- <CR> Jump to the revision under the cursor.
-
- *fugitive-o*
- o Jump to the revision under the cursor in a new split.
-
- *fugitive-O*
- O Jump to the revision under the cursor in a new tab.
-
- *fugitive-~*
- ~ Go to the current file in the [count]th first
- ancestor.
-
- *fugitive-P*
- P Go to the current file in the [count]th parent.
-
- *fugitive-C*
- C Go to the commit containing the current file.
-
- *fugitive-a*
- a Show the current tag, commit, or tree in an alternate
- format.
-
- SPECIFYING REVISIONS *fugitive-revision*
-
- Fugitive revisions are similar to Git revisions as defined in the "SPECIFYING
- REVISIONS" section in the git-rev-parse man page. For commands that accept an
- optional revision, the default is the file in the index for work tree files
- and the work tree file for everything else. Example revisions follow.
-
- Revision Meaning ~
- HEAD .git/HEAD
- master .git/refs/heads/master
- HEAD^{} The commit referenced by HEAD
- HEAD^ The parent of the commit referenced by HEAD
- HEAD: The tree referenced by HEAD
- /HEAD The file named HEAD in the work tree
- Makefile The file named Makefile in the work tree
- HEAD^:Makefile The file named Makefile in the parent of HEAD
- :Makefile The file named Makefile in the index (writable)
- - The current file in HEAD
- ^ The current file in the previous commit
- ~3 The current file 3 commits ago
- : .git/index (Same as |:Gstatus|)
- :0 The current file in the index
- :1 The current file's common ancestor during a conflict
- :2 The current file in the target branch during a conflict
- :3 The current file in the merged branch during a conflict
- :/foo The most recent commit with "foo" in the message
-
- STATUSLINE *fugitive-statusline*
-
- *fugitive#statusline()*
- Add %{fugitive#statusline()} to your statusline to get an indicator including
- the current branch and the currently edited file's commit. If you don't have
- a statusline, this one matches the default when 'ruler' is set:
- >
- set statusline=%<%f\ %h%m%r%{fugitive#statusline()}%=%-14.(%l,%c%V%)\ %P
- <
- ABOUT *fugitive-about*
-
- Grab the latest version or report a bug on GitHub:
-
- http://github.com/tpope/vim-fugitive
-
- vim:tw=78:et:ft=help:norl:
|