7dfd617497
Fixes #303. Closes #304. As a reference, https://github.com/k88hudson/git-flight-rules/blob/master/README.md#i-want-to-delete-or-remove-my-last-commit also recommends using --force-with-lease.
228 lines
8.2 KiB
Markdown
228 lines
8.2 KiB
Markdown
git
|
|
===
|
|
|
|
Provides nice git aliases and functions.
|
|
|
|
Many thanks to [Sorin Ionescu](https://github.com/sorin-ionescu) for the
|
|
excellent aliases.
|
|
|
|
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.
|
|
* `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
|
|
graphs.
|
|
* `gbx` deletes a branch.
|
|
* `gbX` deletes a branch irrespective of its merged status.
|
|
|
|
### Commit
|
|
|
|
* `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
|
|
*HEAD*.
|
|
* `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
|
|
commits.
|
|
* `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.
|
|
|
|
### Conflict
|
|
|
|
* `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.
|
|
|
|
### 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` 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.
|
|
|
|
### 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 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).
|
|
|
|
### Log
|
|
|
|
* `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.
|
|
|
|
### Merge
|
|
|
|
* `gm` joins two or more development histories together.
|
|
* `gmC` performs the merge but does not commit.
|
|
* `gmF` performs the merge generating a 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` forces a push safely (with "lease").
|
|
* `gpF` forces a push.
|
|
* `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
|
|
for it.
|
|
* `gpp` pulls and pushes the current branch 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` 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.
|
|
|
|
### 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.
|
|
* `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.
|
|
|
|
### 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 submodules.
|
|
* `gSx` removes a submodule.
|
|
|
|
### Tag
|
|
|
|
* `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.
|
|
|
|
### Working tree
|
|
|
|
* `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` 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
|
|
forcefully.
|
|
|
|
### Misc
|
|
|
|
* `g..` changes the current directory to the top level of the working tree.
|
|
|
|
### Shadows
|
|
|
|
The following aliases may shadow system commands:
|
|
|
|
* `gpt` shadows the GUID partition table maintenance utility.
|
|
* `gs` shadows Ghostscript.
|
|
|
|
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-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.
|