2 Commits

Author SHA1 Message Date
Tim Pope
62c50ff296 Handle .git in file system root
References https://github.com/tpope/vim-fugitive/issues/908
2017-05-07 15:29:01 -04:00
Tim Pope
c2877d0d5c Show commit message in :Gblame statusline
References #405.
2017-05-02 20:52:19 -04:00
7 changed files with 3094 additions and 3456 deletions

2
.gitattributes vendored
View File

@@ -1,2 +0,0 @@
.git* export-ignore
*.markdown export-ignore

View File

@@ -8,14 +8,8 @@ platform issues, and interactions with other plugins. I end up bisecting a
lot more than other projects, and thus I'm especially meticulous here about lot more than other projects, and thus I'm especially meticulous here about
maintaining a clean, readable, history. Squash and force push any requested maintaining a clean, readable, history. Squash and force push any requested
changes to a pull request. And if your [commit message changes to a pull request. And if your [commit message
sucks](https://commit.style), I'm not going to accept it. Period. sucks](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html),
I'm not going to accept it. Period.
If your contribution involves adding a configuration option, you are going to
need a very compelling justification for it. Options add a maintenance
burden, support burden, and documentation bloat, and oftentimes can be
achieved much more simply with a custom map or autocommand. If your option
controls an underlying Git command, ask yourself why Git itself does not offer
such configuration.
Beyond that, don't be shy about asking before patching. What takes you hours Beyond that, don't be shy about asking before patching. What takes you hours
might take me minutes simply because I have both domain knowledge and a might take me minutes simply because I have both domain knowledge and a

View File

@@ -20,7 +20,7 @@ changed, or `o` to open it in a split. When you're done, use `:Gedit`
in the historic buffer to go back to the work tree version. in the historic buffer to go back to the work tree version.
`:Gmove` does a `git mv` on a file and simultaneously renames the `:Gmove` does a `git mv` on a file and simultaneously renames the
buffer. `:Gdelete` does a `git rm` on a file and simultaneously deletes buffer. `:Gremove` does a `git rm` on a file and simultaneously deletes
the buffer. the buffer.
Use `:Ggrep` to search the work tree (or any arbitrary commit) with Use `:Ggrep` to search the work tree (or any arbitrary commit) with
@@ -45,7 +45,7 @@ providers such as [GitHub][rhubarb.vim], [GitLab][fugitive-gitlab.vim], and
[fugitive-gitlab.vim]: https://github.com/shumphrey/fugitive-gitlab.vim [fugitive-gitlab.vim]: https://github.com/shumphrey/fugitive-gitlab.vim
[fubitive.vim]: https://github.com/tommcdo/vim-fubitive [fubitive.vim]: https://github.com/tommcdo/vim-fubitive
Add `%{FugitiveStatusline()}` to `'statusline'` to get an indicator Add `%{fugitive#statusline()}` to `'statusline'` to get an indicator
with the current branch in (surprise!) your statusline. with the current branch in (surprise!) your statusline.
Last but not least, there's `:Git` for running any arbitrary command, Last but not least, there's `:Git` for running any arbitrary command,
@@ -66,7 +66,7 @@ If you don't have a preferred installation method, one option is to install
and paste: and paste:
cd ~/.vim/bundle cd ~/.vim/bundle
git clone https://github.com/tpope/vim-fugitive.git git clone git://github.com/tpope/vim-fugitive.git
vim -u NONE -c "helptags vim-fugitive/doc" -c q vim -u NONE -c "helptags vim-fugitive/doc" -c q
If your Vim version is below 7.2, I recommend also installing If your Vim version is below 7.2, I recommend also installing
@@ -75,11 +75,24 @@ other Git niceties.
## FAQ ## FAQ
> Why don't any of the commands exist? > I installed the plugin and started Vim. Why don't any of the commands
> exist?
Fugitive cares about the current file, not the current working directory. Fugitive cares about the current file, not the current working
Edit a file from the repository. To avoid the blank window problem, favor directory. Edit a file from the repository.
commands like `:split` and `:tabedit` over commands like `:new` and `:tabnew`.
> I opened a new tab. Why don't any of the commands exist?
Fugitive cares about the current file, not the current working
directory. Edit a file from the repository.
> Why is `:Gbrowse` not using the right browser?
`:Gbrowse` delegates to `git web--browse`, which is less than perfect
when it comes to finding the right browser. You can tell it the correct
browser to use with `git config --global web.browser ...`. On OS X, for
example, you might want to set this to `open`. See `git web--browse --help`
for details.
> Here's a patch that automatically opens the quickfix window after > Here's a patch that automatically opens the quickfix window after
> `:Ggrep`. > `:Ggrep`.

File diff suppressed because it is too large Load Diff

View File

@@ -40,12 +40,10 @@ that are part of Git repositories).
<CR> |:Gedit| <CR> |:Gedit|
- |:Git| add - |:Git| add
- |:Git| reset (staged files) - |:Git| reset (staged files)
a Show alternative format cA |:Gcommit| --amend --reuse-message=HEAD
ca |:Gcommit| --amend ca |:Gcommit| --amend
cc |:Gcommit| cc |:Gcommit|
ce |:Gcommit| --amend --no-edit cva |:Gcommit| --amend --verbose
cw |:Gcommit| --amend --only
cva |:Gcommit| --verbose --amend
cvc |:Gcommit| --verbose cvc |:Gcommit| --verbose
D |:Gdiff| D |:Gdiff|
ds |:Gsdiff| ds |:Gsdiff|
@@ -54,8 +52,8 @@ that are part of Git repositories).
dv |:Gvdiff| dv |:Gvdiff|
O |:Gtabedit| O |:Gtabedit|
o |:Gsplit| o |:Gsplit|
P |:Git| add --patch p |:Git| add --patch
P |:Git| reset --patch (staged files) p |:Git| reset --patch (staged files)
q close status q close status
r reload status r reload status
S |:Gvsplit| S |:Gvsplit|
@@ -78,21 +76,17 @@ that are part of Git repositories).
*fugitive-:Gmerge* *fugitive-:Gmerge*
:Gmerge [args] Calls git-merge and loads errors and conflicted files :Gmerge [args] Calls git-merge and loads errors and conflicted files
into the |quickfix| list. Opens a |:Gcommit| style into the quickfix list. Opens a |:Gcommit| style
split window for the commit message if the merge split window for the commit message if the merge
succeeds. If called during a merge conflict, the succeeds. If called during a merge conflict, the
conflicted files from the current index are loaded conflicted files from the current index are loaded
into the |quickfix| list. into the quickfix list.
*fugitive-:Gpull* *fugitive-:Gpull*
:Gpull [args] Like |:Gmerge|, but for git-pull. :Gpull [args] Like |:Gmerge|, but for git-pull.
*fugitive-:Grebase*
:Grebase [args] Like |:Gmerge|, but for git-rebase. Interactive
rebase not suppported.
*fugitive-:Gpush* *fugitive-:Gpush*
:Gpush [args] Invoke git-push, load the results into the |quickfix| :Gpush [args] Invoke git-push, load the results into the quickfix
list, and invoke |:cwindow| to reveal any errors. list, and invoke |:cwindow| to reveal any errors.
|:Dispatch| is used if available for asynchronous |:Dispatch| is used if available for asynchronous
invocation. invocation.
@@ -108,20 +102,20 @@ that are part of Git repositories).
*fugitive-:Glog* *fugitive-:Glog*
:Glog [args] Load all previous revisions of the current file into :Glog [args] Load all previous revisions of the current file into
the |quickfix| list. Additional git-log arguments can the quickfix list. Additional git-log arguments can
be given (for example, --reverse). If "--" appears as be given (for example, --reverse). If "--" appears as
an argument, no file specific filtering is done, and an argument, no file specific filtering is done, and
previous commits rather than previous file revisions previous commits rather than previous file revisions
are loaded. are loaded.
:{range}Glog [args] Use git-log -L to load previous revisions of the given :{range}Glog [args] Use git-log -L to load previous revisions of the given
range of the current file into the |quickfix| list. range of the current file into the quickfix list. The
The cursor is positioned on the first line of the cursor is positioned on the first line of the first
first diff hunk for each commit. diff hunk for each commit.
*fugitive-:Gllog* *fugitive-:Gllog*
:Gllog [args] Like |:Glog|, but use the location list instead of the :Gllog [args] Like |:Glog|, but use the location list instead of the
|quickfix| list. quickfix list.
*fugitive-:Gedit* *fugitive-:Ge* *fugitive-:Gedit* *fugitive-:Ge*
:Gedit [revision] |:edit| a |fugitive-revision|. :Gedit [revision] |:edit| a |fugitive-revision|.
@@ -201,23 +195,14 @@ that are part of Git repositories).
:Gmove {destination} Wrapper around git-mv that renames the buffer :Gmove {destination} Wrapper around git-mv that renames the buffer
afterward. The destination is relative to the current afterward. The destination is relative to the current
directory except when started with a /, in which case directory except when started with a /, in which case
it is relative to the work tree. (This is a holdover it is relative to the work tree. Add a ! to pass -f.
from before |:Grename| and will be removed.) Add a !
to pass -f.
*fugitive-:Grename* *fugitive-:Gremove*
:Grename {destination} Like |:Gmove| but operates relative to the parent :Gremove Wrapper around git-rm that deletes the buffer
directory of the current file.
*fugitive-:Gdelete*
:Gdelete Wrapper around git-rm that deletes the buffer
afterward. When invoked in an index file, --cached is afterward. When invoked in an index file, --cached is
passed. Add a ! to pass -f and forcefully discard the passed. Add a ! to pass -f and forcefully discard the
buffer. buffer.
*fugitive-:Gremove*
:Gremove Like :Gdelete, but keep the (now empty) buffer around.
*fugitive-:Gblame* *fugitive-:Gblame*
:Gblame [flags] Run git-blame on the file and open the results in a :Gblame [flags] Run git-blame on the file and open the results in a
scroll bound vertical split. You can give any of scroll bound vertical split. You can give any of
@@ -330,13 +315,13 @@ and the work tree file for everything else. Example revisions follow.
Revision Meaning ~ Revision Meaning ~
HEAD .git/HEAD HEAD .git/HEAD
refs/heads/x .git/refs/heads/x master .git/refs/heads/master
@ The commit referenced by @ aka HEAD HEAD^{} The commit referenced by HEAD
master^ The parent of the commit referenced by master HEAD^ The parent of the commit referenced by HEAD
master: The tree referenced by master HEAD: The tree referenced by HEAD
/master The file named master in the work tree /HEAD The file named HEAD in the work tree
Makefile The file named Makefile in the work tree Makefile The file named Makefile in the work tree
@^:Makefile The file named Makefile in the parent of HEAD HEAD^:Makefile The file named Makefile in the parent of HEAD
:Makefile The file named Makefile in the index (writable) :Makefile The file named Makefile in the index (writable)
- The current file in HEAD - The current file in HEAD
^ The current file in the previous commit ^ The current file in the previous commit
@@ -350,16 +335,16 @@ Makefile The file named Makefile in the work tree
STATUSLINE *fugitive-statusline* STATUSLINE *fugitive-statusline*
*FugitiveStatusline()* *fugitive#statusline()* *fugitive#statusline()*
Add %{FugitiveStatusline()} to your statusline to get an indicator including 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 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: a statusline, this one matches the default when 'ruler' is set:
> >
set statusline=%<%f\ %h%m%r%{FugitiveStatusline()}%=%-14.(%l,%c%V%)\ %P set statusline=%<%f\ %h%m%r%{fugitive#statusline()}%=%-14.(%l,%c%V%)\ %P
< <
*FugitiveHead(...)* *fugitive#head(...)* *fugitive#head(...)*
Use FugitiveHead() to return the name of the current branch. If the current Use fugitive#head() to return the name of the current branch. If the current
HEAD is detached, FugitiveHead() will return the empty string, unless the HEAD is detached, fugitive#head() will return the empty string, unless the
optional argument is given, in which case the hash of the current commit will optional argument is given, in which case the hash of the current commit will
be truncated to the given number of characters. be truncated to the given number of characters.

View File

@@ -1 +0,0 @@
autocmd BufReadPost *.fugitiveblame setfiletype fugitiveblame

File diff suppressed because it is too large Load Diff