Sorin Ionescu
12 years ago
4 changed files with 300 additions and 61 deletions
@ -0,0 +1,298 @@
@@ -0,0 +1,298 @@
|
||||
Git |
||||
=== |
||||
|
||||
Enhances the [Git][1] distributed version control system by providing aliases, functions and by exposing repository status information to prompts. |
||||
|
||||
Git **1.7.2** is the [minimum required version][7]. |
||||
|
||||
Settings |
||||
-------- |
||||
|
||||
### Log |
||||
|
||||
The format of the [git-log][8] output is configurable via the following styles, |
||||
which will be passed to the `--prety=format:` switch. |
||||
|
||||
zstyle ':prezto:module:git:log:brief' format '' |
||||
zstyle ':prezto:module:git:log:oneline' format '' |
||||
zstyle ':prezto:module:git:log:medium' format '' |
||||
|
||||
### Status |
||||
|
||||
Retrieving the status of a repository with submodules can take a long time. |
||||
Submodules may be ignored when they are *dirty*, *untracked*, *all*, or *none*. |
||||
|
||||
zstyle ':prezto:module:git:status:ignore' submodules 'all' |
||||
|
||||
This setting affects all aliases and functions that call `git-status`. |
||||
|
||||
Aliases |
||||
------- |
||||
|
||||
### Git |
||||
|
||||
- `g` is short for `git`. |
||||
|
||||
### Branch |
||||
|
||||
- `gb` lists, creates, renames, and deletes branches. |
||||
- `gbc` creates a new branch. |
||||
- `gbl` lists branches and their commits. |
||||
- `gbL` lists local and remote branches and their commits. |
||||
- `gbs` lists branches and their commits with ancestery graphs. |
||||
- `gbS` lists local and remote branches and their commits with ancestery |
||||
graphs. |
||||
- `gbx` deletes a branch. |
||||
- `gbX` deletes a branch irrespective of its merged status. |
||||
- `gbm` renames a branch. |
||||
- `gbM` renames a branch even if the new branch name already exists. |
||||
|
||||
|
||||
### Commit |
||||
|
||||
- `gc` records changes to the repository. |
||||
- `gca` stages all modified and deleted files. |
||||
- `gcm` records changes to the repository with the given message. |
||||
- `gco` checks out a branch or paths to work tree. |
||||
- `gcO` checks out paths to work tree using the *HEAD* commit. |
||||
- `gcf` amends the tip of the current branch using the same log message as |
||||
*HEAD*. |
||||
- `gcp` applies changes introduced by existing commits. |
||||
- `gcP` applies changes introduced by existing commits without committing. |
||||
- `gcr` reverts existing commits by reverting patches and recording new |
||||
commits. |
||||
- `gcR` removes the *HEAD* commit. |
||||
- `gcs` displays various types of objects. |
||||
- `gcl` displays lost commits. |
||||
|
||||
### Data |
||||
|
||||
- `gd` displays information about files in the index and the work tree. |
||||
- `gdc` lists cached files. |
||||
- `gdx` lists deleted files. |
||||
- `gdm` lists modified files. |
||||
- `gdu` lists untracked files. |
||||
- `gdk` lists killed files. |
||||
- `gdi` lists ignored files. |
||||
|
||||
### Fetch |
||||
|
||||
- `gf` downloads objects and references from another repository. |
||||
- `gfc` clones a repository into a new directory. |
||||
- `gfm` fetches from and merges with another repository or local branch. |
||||
- `gfr` fetches from and rebases on another repository or local branch. |
||||
|
||||
### Grep |
||||
|
||||
- `gg` displays lines matching a pattern. |
||||
- `ggi` displays lines matching a pattern ignoring case. |
||||
- `ggl` displays files matching a pattern. |
||||
- `ggL` displays files are not matching a pattern. |
||||
- `ggv` displays lines not matching a pattern. |
||||
- `ggw` displays lines matching a pattern at word boundary. |
||||
|
||||
### Index |
||||
|
||||
- `gia` adds file contents to the index. |
||||
- `giA` adds file contents to the index interactively. |
||||
- `giu` adds file contents to the index (updates only known files). |
||||
- `gid` displays changes between the index and a named commit (diff). |
||||
- `giD` displays changes between the index and a named commit (word diff). |
||||
- `gir` resets current HEAD to the specified state. |
||||
- `giR` resets current index to the specified state. |
||||
- `gix` removes files/directories from the index (recursively). |
||||
- `giX` removes files/directories from the index (recursively and forced). |
||||
|
||||
### Conflict |
||||
|
||||
- `gCl` lists unmerged files. |
||||
- `gCa` adds unmerged file contents to the index. |
||||
- `gCe` executes merge-tool on all unmerged file. |
||||
- `gCo` checks out our changes for unmerged paths. |
||||
- `gCO` checks out our changes for all unmerged paths. |
||||
- `gCt` checks out their changes for unmerged paths. |
||||
- `gCT` checks out their changes for all unmerged paths. |
||||
|
||||
### Log |
||||
|
||||
- `gl` displays the log. |
||||
- `gls` displays the stats log. |
||||
- `gld` displays the diff log. |
||||
- `glo` displays the one line log. |
||||
- `glg` displays the graph log. |
||||
- `glb` displays the brief commit log. |
||||
- `glc` displays the commit count for each contributor in descending order. |
||||
|
||||
### Merge |
||||
|
||||
- `gm` joins two or more development histories together. |
||||
- `gmC` joins two or more development histories together but does not commit. |
||||
- `gmF` joins two or more development histories together but does not commit |
||||
generating a merge commit even if the merge resolved as a fast-forward. |
||||
- `gma` aborts the conflict resolution, and reconstructs the pre-merge state. |
||||
- `gmt` runs the merge conflict resolution tools to resolve conflicts. |
||||
|
||||
### Push |
||||
|
||||
- `gp` updates remote refs along with associated objects. |
||||
- `gpf` forcefully updates remote refs along with associated objects. |
||||
- `gpa` updates remote branches along with associated objects. |
||||
- `gpA` updates remote branches and tags along with associated objects. |
||||
- `gpt` updates remote tags along with associated objects. |
||||
- `gpc` updates remote refs along with associated objects and adds *origin* |
||||
as an upstream reference for the current branch. |
||||
- `gpp` pulls and pushes from origin to origin. |
||||
|
||||
### Rebase |
||||
|
||||
- `gr` forward-ports local commits to the updated upstream head. |
||||
- `gra` aborts the rebase. |
||||
- `grc` continues the rebase after merge conflicts are resolved. |
||||
- `gri` makes a list of commits to be rebased and opens the editor. |
||||
- `grs` skips the current patch. |
||||
|
||||
### Remote |
||||
|
||||
- `gR` manages tracked repositories. |
||||
- `gRl` displays remote names and URLs. |
||||
- `gRa` adds a new remote. |
||||
- `gRx` removes a remote. |
||||
- `gRm` renames a remote. |
||||
- `gRu` fetches remotes updates. |
||||
- `gRc` deletes all stale remote tracking branches. |
||||
- `gRs` displays information about a given remote. |
||||
- `gRb` opens a remote on [GitHub][3] in the default browser. |
||||
|
||||
### Stash |
||||
|
||||
- `gs` stashes the changes of the dirty working directory. |
||||
- `gsa` applies the changes recorded in a stash to the working directory. |
||||
- `gsx` drops a stashed state. |
||||
- `gsX` drops all the stashed states. |
||||
- `gsd` lists dropped stashed states. |
||||
- `gsl` lists stashed states. |
||||
- `gsL` displays the changes recorded in the stash as a diff between the |
||||
stashed state and its original parent. |
||||
- `gsp` removes and applies a single stashed state from the stash list. |
||||
- `gsr` recovers a given stashed state. |
||||
- `gss` stashes the changes of the dirty working directory, including untracked. |
||||
- `gsS` stashes the changes of the dirty working directory interactively. |
||||
- `gsw` stashes the changes of the dirty working directory retaining the index. |
||||
|
||||
### Submodule |
||||
|
||||
- `gS` initializes, updates, or inspects submodules. |
||||
- `gSa` adds given a repository as a submodule. |
||||
- `gSf` evaluates a shell command in each of checked out submodules. |
||||
- `gSi` initializes submodules. |
||||
- `gSI` initializes and clones submodules recursively. |
||||
- `gSl` lists the commits of all submodules. |
||||
- `gSm` moves a submodule. |
||||
- `gSs` synchronizes submodules' remote URL to the value specified in |
||||
.gitmodules. |
||||
- `gSu` fetches and merges the latest changes for all submodule. |
||||
- `gSx` removes a submodule. |
||||
|
||||
### Working directory |
||||
|
||||
- `gws` displays working-tree status in the short format. |
||||
- `gwS` displays working-tree status. |
||||
- `gwd` displays changes between the working tree and the index (diff). |
||||
- `gwD` displays changes between the working tree and the index (word diff). |
||||
- `gwr` resets the current HEAD to the specified state, does not touch the |
||||
index nor the working tree. |
||||
- `gwR` resets the current HEAD, index and working tree to the specified state. |
||||
- `gwc` removes untracked files from the working tree (dry-run). |
||||
- `gwC` removes untracked files from the working tree. |
||||
- `gwx` removes files from the working tree and from the index recursively. |
||||
- `gwX` removes files from the working tree and from the index recursively and |
||||
forcefully. |
||||
|
||||
### Shadows |
||||
|
||||
The following aliases may shadow system commands: |
||||
|
||||
- `gpt` shadows the [GUID partition table maintenance utility][4]. |
||||
- `gs` shadows the [Ghostscript][5]. |
||||
|
||||
If you frequently use the above commands, you may wish to remove said aliases |
||||
from this module or to disable them at the bottom of the zshrc with `unalias`. |
||||
|
||||
You can temporarily bypass an alias by prefixing it with a backward slash: |
||||
`\gpt`. |
||||
|
||||
Functions |
||||
--------- |
||||
|
||||
- `git-branch-current` displays the current branch. |
||||
- `git-commit-lost` lists lost commits. |
||||
- `git-dir` displays the path to the Git directory. |
||||
- `git-hub-browse` opens the [GitHub][3] repository in the default browser. |
||||
- `git-hub-shorten-url` shortens GitHub URLs. |
||||
- `git-info` exposes repository information via the `$git_info` associative |
||||
array. |
||||
- `git-root` displays the path to the working tree root. |
||||
- `git-stash-clear-interactive` asks for confirmation before clearing the stash. |
||||
- `git-stash-dropped` lists dropped stashed states. |
||||
- `git-stash-recover` recovers given dropped stashed states. |
||||
- `git-submodule-move` moves a submodule. |
||||
- `git-submodule-remove` removes a submodule. |
||||
|
||||
Theming |
||||
------- |
||||
|
||||
To display information about the current repository in a prompt, define the |
||||
following styles in the `prompt_name_setup` function. |
||||
|
||||
| Name | Format Code | Content |
||||
| --------- | :---------: | --------------------------------------------------- |
||||
| action | %s | Special action name |
||||
| added | %a | Added files count |
||||
| ahead | %A | Commits ahead of remote count |
||||
| behind | %B | Commits behind of remote count |
||||
| branch | %b | Branch name |
||||
| commit | %c | Commit hash |
||||
| clean | %C | Clean state |
||||
| deleted | %d | Deleted files count |
||||
| dirty | %D | Dirty files count |
||||
| modified | %m | Modified files count |
||||
| position | %p | Commits from the nearest tag count |
||||
| remote | %R | Remote name |
||||
| renamed | %r | Renamed files count |
||||
| stashed | %S | Stashed states count |
||||
| unmerged | %U | Unmerged files count |
||||
| untracked | %u | Untracked files count |
||||
|
||||
First, format the repository state attributes. For example, to format the branch |
||||
and remote names, define the following styles. |
||||
|
||||
zstyle ':prezto:module:git:info:branch' format 'branch:%b' |
||||
zstyle ':prezto:module:git:info:remote' format 'remote:%R' |
||||
|
||||
Second, format how the above attributes are displayed in prompts. |
||||
|
||||
zstyle ':prezto:module:git:info:keys' format \ |
||||
'prompt' ' git(%b)' \ |
||||
'rprompt' '[%R]' |
||||
|
||||
Last, add `$git_info[prompt]` to `$PROMPT` and `$git_info[prompt]` to |
||||
`$RPROMPT` respectively and call `git-info` in the `prompt_name_preexec` hook |
||||
function. |
||||
|
||||
Authors |
||||
------- |
||||
|
||||
*The authors of this module should be contacted via the [issue tracker][6].* |
||||
|
||||
- [Sorin Ionescu](https://github.com/sorin-ionescu) |
||||
- [Colin Hebert](https://github.com/ColinHebert) |
||||
|
||||
[1]: http://www.git-scm.com |
||||
[2]: https://github.com/defunkt/hub |
||||
[3]: https://www.github.com |
||||
[4]: http://www.manpagez.com/man/8/gpt/ |
||||
[5]: http://linux.die.net/man/1/gs |
||||
[6]: https://github.com/sorin-ionescu/prezto/issues |
||||
[7]: https://github.com/sorin-ionescu/prezto/issues/219 |
||||
[8]: http://www.kernel.org/pub/software/scm/git/docs/git-log.html |
||||
|
Loading…
Reference in new issue