2018-05-14 20:09:11 -04:00
|
|
|
git
|
2015-12-15 02:28:02 -05:00
|
|
|
===
|
|
|
|
|
2018-12-13 14:47:25 -05:00
|
|
|
Provides handy git aliases and functions.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
[git] Review aliases and README.md
This complements the changes done in the last commit, and also fixes the
`glg` output, and removes the now unnecessary `--date=relative`
parameter from `glG`.
Although I insisted on the `--long-option` format on 8669a4f, I think
`rm -rf` is pretty common and recognizable, so revert to that.
Add missing aliases to README.md, and improve description of existing
ones. The main improvement is trying to be more concise, so instead of
repeating "records changes to the repository" multiple times, simply say
"commits", for example. Also try to use words that match the alias
letters, so for "gcs" say "shows" instead of "displays", for example.
2018-01-11 11:30:20 -05:00
|
|
|
Many thanks to [Sorin Ionescu](https://github.com/sorin-ionescu) for the
|
2018-12-13 14:47:25 -05:00
|
|
|
excellent original aliases.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
Aliases
|
|
|
|
-------
|
|
|
|
|
|
|
|
### Git
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `g` is short for `git`.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
### Branch
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `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.
|
|
|
|
* `gbm` renames a branch.
|
|
|
|
* `gbM` renames a branch even if the new branch name already exists.
|
|
|
|
* `gbs` lists branches and their commits with ancestry graphs.
|
|
|
|
* `gbS` lists local and remote branches and their commits with ancestry
|
2015-12-15 02:28:02 -05:00
|
|
|
graphs.
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gbx` deletes a branch.
|
|
|
|
* `gbX` deletes a branch irrespective of its merged status.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
### Commit
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gc` records changes to the repository.
|
|
|
|
* `gca` commits all modified and deleted files.
|
|
|
|
* `gcm` commits with the given message.
|
|
|
|
* `gco` checks out a branch or paths to the working tree.
|
|
|
|
* `gcO` checks out hunks from the index or the tree interactively.
|
|
|
|
* `gcf` amends the tip of the current branch reusing the same log message as
|
2015-12-15 02:28:02 -05:00
|
|
|
*HEAD*.
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gcF` amends the tip of the current branch.
|
|
|
|
* `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
|
2015-12-15 02:28:02 -05:00
|
|
|
commits.
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gcR` removes the *HEAD* commit.
|
|
|
|
* `gcs` shows one or more objects (blobs, trees, tags and commits).
|
|
|
|
* `gcS` commits with GPG signature.
|
|
|
|
* `gcv` verifies the GPG signature of commits.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
### Conflict
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gCl` lists unmerged files.
|
|
|
|
* `gCa` adds unmerged file contents to the index.
|
|
|
|
* `gCe` executes merge-tool on all unmerged files.
|
|
|
|
* `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.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
### Data
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `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.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
### Fetch
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `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.
|
2018-12-13 14:47:25 -05:00
|
|
|
* `gfr` fetches from and rebases on top of another repository or local branch.
|
|
|
|
* `gfu` removes unexisting remote-tracking references, fetches all remotes and
|
|
|
|
merges.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
### Grep
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gg` displays lines matching a pattern.
|
|
|
|
* `ggi` displays lines matching a pattern ignoring case.
|
|
|
|
* `ggl` lists files matching a pattern.
|
|
|
|
* `ggL` lists files that are not matching a pattern.
|
|
|
|
* `ggv` displays lines not matching a pattern.
|
|
|
|
* `ggw` displays lines matching a pattern at word boundary.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
### Index
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `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 the current *HEAD* to the specified state.
|
|
|
|
* `giR` resets the current index interactively.
|
|
|
|
* `gix` removes files/directories from the index (recursively).
|
|
|
|
* `giX` removes files/directories from the index (recursively and forced).
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
### Log
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gl` displays the log.
|
|
|
|
* `gls` displays the stats log.
|
|
|
|
* `gld` displays the diff log.
|
|
|
|
* `glo` displays the one line log.
|
|
|
|
* `glO` displays the one line log with authors and dates.
|
|
|
|
* `glg` displays the graph log.
|
|
|
|
* `glG` displays the graph log with authors and dates.
|
|
|
|
* `glv` displays the log verifying the GPG signature of commits.
|
|
|
|
* `glc` displays the commit count for each contributor in descending order.
|
2019-01-11 11:14:26 -05:00
|
|
|
* `glr` manages reflog information.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
### Merge
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gm` joins two or more development histories together.
|
2019-03-21 10:54:13 -04:00
|
|
|
* `gma` aborts the conflict resolution, and reconstructs the pre-merge state.
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gmC` performs the merge but does not commit.
|
|
|
|
* `gmF` performs the merge generating a commit even if the merge resolved as a
|
[git] Review aliases and README.md
This complements the changes done in the last commit, and also fixes the
`glg` output, and removes the now unnecessary `--date=relative`
parameter from `glG`.
Although I insisted on the `--long-option` format on 8669a4f, I think
`rm -rf` is pretty common and recognizable, so revert to that.
Add missing aliases to README.md, and improve description of existing
ones. The main improvement is trying to be more concise, so instead of
repeating "records changes to the repository" multiple times, simply say
"commits", for example. Also try to use words that match the alias
letters, so for "gcs" say "shows" instead of "displays", for example.
2018-01-11 11:30:20 -05:00
|
|
|
fast-forward.
|
2019-03-21 10:54:13 -04:00
|
|
|
* `gmS` commits with GPG signature.
|
|
|
|
* `gmv` verifies the GPG signature of the tip commit of the side branch being
|
|
|
|
merged.
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gmt` runs the merge conflict resolution tools to resolve conflicts.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
### Push
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gp` updates remote refs along with associated objects.
|
2018-10-18 12:55:30 -04:00
|
|
|
* `gpf` forces a push safely (with "lease").
|
|
|
|
* `gpF` forces a push.
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gpa` pushes all branches.
|
|
|
|
* `gpA` pushes all branches and tags.
|
|
|
|
* `gpt` pushes all tags.
|
|
|
|
* `gpc` pushes the current branch and adds *origin* as an upstream reference
|
[git] Review aliases and README.md
This complements the changes done in the last commit, and also fixes the
`glg` output, and removes the now unnecessary `--date=relative`
parameter from `glG`.
Although I insisted on the `--long-option` format on 8669a4f, I think
`rm -rf` is pretty common and recognizable, so revert to that.
Add missing aliases to README.md, and improve description of existing
ones. The main improvement is trying to be more concise, so instead of
repeating "records changes to the repository" multiple times, simply say
"commits", for example. Also try to use words that match the alias
letters, so for "gcs" say "shows" instead of "displays", for example.
2018-01-11 11:30:20 -05:00
|
|
|
for it.
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gpp` pulls and pushes the current branch from *origin* to *origin*.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
### Rebase
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `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.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
### Remote
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gR` manages tracked repositories.
|
|
|
|
* `gRl` lists remote names and their URLs.
|
|
|
|
* `gRa` adds a new remote.
|
|
|
|
* `gRx` removes a remote.
|
|
|
|
* `gRm` renames a remote.
|
|
|
|
* `gRu` fetches remotes updates.
|
|
|
|
* `gRp` prunes all stale remote tracking branches.
|
|
|
|
* `gRs` shows information about a given remote.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
### Stash
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `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.
|
|
|
|
* `gsl` lists stashed states.
|
|
|
|
* `gsd` displays changes between the stash 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 working directory changes, including untracked files.
|
|
|
|
* `gsS` stashes the working directory changes interactively.
|
|
|
|
* `gsw` stashes the working directory changes retaining the index.
|
|
|
|
* `gsu` unapplies (reverts) applied changes.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
### Submodule
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `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
|
2018-12-13 14:47:25 -05:00
|
|
|
`.gitmodules`.
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gSu` fetches and merges the latest changes for all submodules.
|
|
|
|
* `gSx` removes a submodule.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
[git] Review aliases and README.md
This complements the changes done in the last commit, and also fixes the
`glg` output, and removes the now unnecessary `--date=relative`
parameter from `glG`.
Although I insisted on the `--long-option` format on 8669a4f, I think
`rm -rf` is pretty common and recognizable, so revert to that.
Add missing aliases to README.md, and improve description of existing
ones. The main improvement is trying to be more concise, so instead of
repeating "records changes to the repository" multiple times, simply say
"commits", for example. Also try to use words that match the alias
letters, so for "gcs" say "shows" instead of "displays", for example.
2018-01-11 11:30:20 -05:00
|
|
|
### Tag
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gt` creates, lists, deletes or verifies a tag object signed with GPG.
|
|
|
|
* `gts` creates a GPG-signed tag.
|
|
|
|
* `gtv` verifies the GPG signature of tags.
|
|
|
|
* `gtx` deletes tags with given names.
|
[git] Review aliases and README.md
This complements the changes done in the last commit, and also fixes the
`glg` output, and removes the now unnecessary `--date=relative`
parameter from `glG`.
Although I insisted on the `--long-option` format on 8669a4f, I think
`rm -rf` is pretty common and recognizable, so revert to that.
Add missing aliases to README.md, and improve description of existing
ones. The main improvement is trying to be more concise, so instead of
repeating "records changes to the repository" multiple times, simply say
"commits", for example. Also try to use words that match the alias
letters, so for "gcs" say "shows" instead of "displays", for example.
2018-01-11 11:30:20 -05:00
|
|
|
|
|
|
|
### Working tree
|
2015-12-15 02:28:02 -05:00
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `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
|
[git] Review aliases and README.md
This complements the changes done in the last commit, and also fixes the
`glg` output, and removes the now unnecessary `--date=relative`
parameter from `glG`.
Although I insisted on the `--long-option` format on 8669a4f, I think
`rm -rf` is pretty common and recognizable, so revert to that.
Add missing aliases to README.md, and improve description of existing
ones. The main improvement is trying to be more concise, so instead of
repeating "records changes to the repository" multiple times, simply say
"commits", for example. Also try to use words that match the alias
letters, so for "gcs" say "shows" instead of "displays", for example.
2018-01-11 11:30:20 -05:00
|
|
|
index nor the working tree.
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gwR` resets the current *HEAD*, index and working tree to the specified
|
[git] Review aliases and README.md
This complements the changes done in the last commit, and also fixes the
`glg` output, and removes the now unnecessary `--date=relative`
parameter from `glG`.
Although I insisted on the `--long-option` format on 8669a4f, I think
`rm -rf` is pretty common and recognizable, so revert to that.
Add missing aliases to README.md, and improve description of existing
ones. The main improvement is trying to be more concise, so instead of
repeating "records changes to the repository" multiple times, simply say
"commits", for example. Also try to use words that match the alias
letters, so for "gcs" say "shows" instead of "displays", for example.
2018-01-11 11:30:20 -05:00
|
|
|
state.
|
2018-05-14 20:09:11 -04:00
|
|
|
* `gwc` cleans untracked files from the working tree (dry-run).
|
|
|
|
* `gwC` cleans 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
|
2015-12-15 02:28:02 -05:00
|
|
|
forcefully.
|
|
|
|
|
[git] Review aliases and README.md
This complements the changes done in the last commit, and also fixes the
`glg` output, and removes the now unnecessary `--date=relative`
parameter from `glG`.
Although I insisted on the `--long-option` format on 8669a4f, I think
`rm -rf` is pretty common and recognizable, so revert to that.
Add missing aliases to README.md, and improve description of existing
ones. The main improvement is trying to be more concise, so instead of
repeating "records changes to the repository" multiple times, simply say
"commits", for example. Also try to use words that match the alias
letters, so for "gcs" say "shows" instead of "displays", for example.
2018-01-11 11:30:20 -05:00
|
|
|
### Misc
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `g..` changes the current directory to the top level of the working tree.
|
[git] Review aliases and README.md
This complements the changes done in the last commit, and also fixes the
`glg` output, and removes the now unnecessary `--date=relative`
parameter from `glG`.
Although I insisted on the `--long-option` format on 8669a4f, I think
`rm -rf` is pretty common and recognizable, so revert to that.
Add missing aliases to README.md, and improve description of existing
ones. The main improvement is trying to be more concise, so instead of
repeating "records changes to the repository" multiple times, simply say
"commits", for example. Also try to use words that match the alias
letters, so for "gcs" say "shows" instead of "displays", for example.
2018-01-11 11:30:20 -05:00
|
|
|
|
2019-01-21 16:27:29 -05:00
|
|
|
Settings
|
|
|
|
--------
|
2015-12-15 02:28:02 -05:00
|
|
|
|
2019-01-21 16:27:29 -05:00
|
|
|
By default, all aliases are defined with a `g` prefix, as you can see above. But
|
|
|
|
some of the default aliases may shadow system commands, like `gpt` for the GUID
|
|
|
|
partition table maintenance utility.
|
2015-12-15 02:28:02 -05:00
|
|
|
|
|
|
|
You can temporarily bypass an alias by prefixing it with a backward slash:
|
|
|
|
`\gpt`.
|
|
|
|
|
2019-01-21 16:27:29 -05:00
|
|
|
Or you can use the following zstyle if you wish to customize the prefix used to
|
|
|
|
define all aliases:
|
|
|
|
|
|
|
|
zstyle ':zim:git' aliases-prefix 'G'
|
|
|
|
|
2015-12-15 02:28:02 -05:00
|
|
|
Functions
|
|
|
|
---------
|
|
|
|
|
2018-05-14 20:09:11 -04:00
|
|
|
* `git-branch-current` displays the current branch.
|
2018-12-13 14:47:25 -05:00
|
|
|
* `git-branch-delete-interactive` asks for confirmation to also delete the
|
|
|
|
upstream remote branch(es).
|
2018-05-14 20:09:11 -04:00
|
|
|
* `git-dir` displays the path to the Git directory.
|
|
|
|
* `git-ignore-add` adds any arguments to the .gitignore in the project root.
|
|
|
|
* `git-root` displays the path to the working tree root.
|
|
|
|
* `git-stash-clear-interactive` asks for confirmation before clearing the stash.
|
|
|
|
* `git-stash-recover` recovers given dropped stashed states.
|
|
|
|
* `git-submodule-move` moves a submodule.
|
|
|
|
* `git-submodule-remove` removes a submodule.
|