-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1743 from georgettica/georgettica/sort-git-aliases
refactor(aliases): sort
- Loading branch information
Showing
2 changed files
with
171 additions
and
111 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,137 +1,195 @@ | ||
# shellcheck shell=bash | ||
cite 'about-alias' | ||
about-alias 'common git abbreviations' | ||
|
||
# Aliases | ||
alias gcl='git clone' | ||
alias g='git' | ||
alias get='git' | ||
|
||
# add | ||
alias ga='git add' | ||
alias grm='git rm' | ||
alias gap='git add -p' | ||
alias gall='git add -A' | ||
alias gap='git add -p' | ||
|
||
# branch | ||
alias gb='git branch' | ||
alias gbD='git branch -D' | ||
alias gba='git branch -a' | ||
alias gbd='git branch -d' | ||
alias gbm='git branch -m' | ||
alias gbt='git branch --track' | ||
alias gdel='git branch -D' | ||
|
||
# for-each-ref | ||
alias gbc='git for-each-ref --format="%(authorname) %09 %(if)%(HEAD)%(then)*%(else)%(refname:short)%(end) %09 %(creatordate)" refs/remotes/ --sort=authorname DESC' # FROM https://stackoverflow.com/a/58623139/10362396 | ||
|
||
# commit | ||
alias gc='git commit -v' | ||
alias gca='git commit -v -a' | ||
alias gcaa='git commit -a --amend -C HEAD' # Add uncommitted and unstaged changes to the last commit | ||
alias gcam='git commit -v -am' | ||
alias gcamd='git commit --amend' | ||
alias gcm='git commit -v -m' | ||
alias gci='git commit --interactive' | ||
alias gcsam='git commit -S -am' | ||
|
||
# checkout | ||
alias gcb='git checkout -b' | ||
alias gco='git checkout' | ||
alias gcob='git checkout -b' | ||
alias gcobu='git checkout -b ${USER}/' | ||
alias gcom='git checkout master' | ||
alias gcpd='git checkout master; git pull; git branch -D' | ||
alias gct='git checkout --track' | ||
|
||
# clone | ||
alias gcl='git clone' | ||
|
||
# clean | ||
alias gclean='git clean -fd' | ||
|
||
# cherry-pick | ||
alias gcp='git cherry-pick' | ||
alias gcpx='git cherry-pick -x' | ||
|
||
# diff | ||
alias gd='git diff' | ||
alias gds='git diff --staged' | ||
alias gdt='git difftool' | ||
|
||
# archive | ||
alias gexport='git archive --format zip --output' | ||
|
||
# fetch | ||
alias gf='git fetch --all --prune' | ||
alias gft='git fetch --all --prune --tags' | ||
alias gfv='git fetch --all --prune --verbose' | ||
alias gftv='git fetch --all --prune --tags --verbose' | ||
alias gus='git reset HEAD' | ||
alias gpristine='git reset --hard && git clean -dfx' | ||
alias gclean='git clean -fd' | ||
alias gm="git merge" | ||
alias gmv='git mv' | ||
alias g='git' | ||
alias get='git' | ||
alias gs='git status' | ||
alias gss='git status -s' | ||
alias gsu='git submodule update --init --recursive' | ||
alias gl='git pull' | ||
alias gpl='git pull' | ||
alias glum='git pull upstream master' | ||
alias gpr='git pull --rebase' | ||
alias gpp='git pull && git push' | ||
alias gfv='git fetch --all --prune --verbose' | ||
alias gmu='git fetch origin -v; git fetch upstream -v; git merge upstream/master' | ||
alias gup='git fetch && git rebase' | ||
|
||
# log | ||
alias gg='git log --graph --pretty=format:'\''%C(bold)%h%Creset%C(magenta)%d%Creset %s %C(yellow)<%an> %C(cyan)(%cr)%Creset'\'' --abbrev-commit --date=relative' | ||
alias ggf='git log --graph --date=short --pretty=format:'\''%C(auto)%h %Cgreen%an%Creset %Cblue%cd%Creset %C(auto)%d %s'\''' | ||
alias ggs='gg --stat' | ||
alias gll='git log --graph --pretty=oneline --abbrev-commit' | ||
alias gnew='git log HEAD@{1}..HEAD@{0}' # Show commits since last pull, see http://blogs.atlassian.com/2014/10/advanced-git-aliases/ | ||
alias gwc='git whatchanged' | ||
|
||
# ls-files | ||
alias gu='git ls-files . --exclude-standard --others' # Show untracked files | ||
|
||
# gui | ||
alias ggui='git gui' | ||
|
||
# home | ||
alias ghm='cd '\''$(git rev-parse --show-toplevel)'\''' # Git home | ||
# appendage to ghm | ||
if ! _command_exists gh; then | ||
alias gh='ghm' | ||
fi | ||
|
||
# merge | ||
alias gm='git merge' | ||
|
||
# mv | ||
alias gmv='git mv' | ||
|
||
# patch | ||
alias gpatch='git format-patch -1' | ||
|
||
# push | ||
alias gp='git push' | ||
alias gpd='git push --delete' | ||
alias gpf='git push --force' | ||
alias gpo='git push origin HEAD' | ||
alias gpom='git push origin master' | ||
alias gpu='git push --set-upstream' | ||
alias gpunch='git push --force-with-lease' | ||
alias gpuo='git push --set-upstream origin' | ||
alias gpuoc='git push --set-upstream origin $(git symbolic-ref --short HEAD)' | ||
alias gpom='git push origin master' | ||
|
||
# pull | ||
alias gl='git pull' | ||
alias glum='git pull upstream master' | ||
alias gpl='git pull' | ||
alias gpp='git pull && git push' | ||
alias gpr='git pull --rebase' | ||
|
||
# remote | ||
alias gr='git remote' | ||
alias grv='git remote -v' | ||
alias gra='git remote add' | ||
alias grv='git remote -v' | ||
|
||
# rm | ||
alias grm='git rm' | ||
|
||
# rebase | ||
alias grb='git rebase' | ||
alias grm='git rebase master' | ||
alias grmi='git rebase master -i' | ||
alias gd='git diff' | ||
alias gds='git diff --staged' | ||
alias gdt='git difftool' | ||
alias gdv='git diff -w "$@" | vim -R -' | ||
alias gc='git commit -v' | ||
alias gca='git commit -v -a' | ||
alias gcm='git commit -v -m' | ||
alias gcam="git commit -v -am" | ||
alias gci='git commit --interactive' | ||
alias gcamd='git commit --amend' | ||
alias gb='git branch' | ||
alias gba='git branch -a' | ||
# FROM https://stackoverflow.com/a/58623139/10362396 | ||
alias gbc='git for-each-ref --format="%(authorname) %09 %(if)%(HEAD)%(then)*%(else)%(refname:short)%(end) %09 %(creatordate)" refs/remotes/ --sort=authorname DESC' | ||
alias gbt='git branch --track' | ||
alias gbm='git branch -m' | ||
alias gbd='git branch -d' | ||
alias gbD='git branch -D' | ||
alias gprom='git fetch origin master && git rebase origin/master && git update-ref refs/heads/master origin/master' # Rebase with latest remote master | ||
|
||
# reset | ||
alias gus='git reset HEAD' | ||
alias gpristine='git reset --hard && git clean -dfx' | ||
|
||
# status | ||
alias gs='git status' | ||
alias gss='git status -s' | ||
|
||
# shortlog | ||
alias gcount='git shortlog -sn' | ||
alias gcp='git cherry-pick' | ||
alias gcpx='git cherry-pick -x' | ||
alias gco='git checkout' | ||
alias gcom='git checkout master' | ||
alias gcb='git checkout -b' | ||
alias gcob='git checkout -b' | ||
alias gcobu='git checkout -b ${USER}/' | ||
alias gct='git checkout --track' | ||
alias gcpd='git checkout master; git pull; git branch -D' | ||
alias gexport='git archive --format zip --output' | ||
alias gdel='git branch -D' | ||
alias gmu='git fetch origin -v; git fetch upstream -v; git merge upstream/master' | ||
alias gll='git log --graph --pretty=oneline --abbrev-commit' | ||
alias gg="git log --graph --pretty=format:'%C(bold)%h%Creset%C(magenta)%d%Creset %s %C(yellow)<%an> %C(cyan)(%cr)%Creset' --abbrev-commit --date=relative" | ||
alias ggf="git log --graph --date=short --pretty=format:'%C(auto)%h %Cgreen%an%Creset %Cblue%cd%Creset %C(auto)%d %s'" | ||
alias ggs="gg --stat" | ||
alias gsh="git show" | ||
alias gsl="git shortlog -sn" | ||
alias gwc="git whatchanged" | ||
alias gt="git tag" | ||
alias gta="git tag -a" | ||
alias gtd="git tag -d" | ||
alias gtl="git tag -l" | ||
alias gpatch="git format-patch -1" | ||
# From http://blogs.atlassian.com/2014/10/advanced-git-aliases/ | ||
# Show commits since last pull | ||
alias gnew="git log HEAD@{1}..HEAD@{0}" | ||
# Add uncommitted and unstaged changes to the last commit | ||
alias gcaa="git commit -a --amend -C HEAD" | ||
# Rebase with latest remote master | ||
alias gprom="git fetch origin master && git rebase origin/master && git update-ref refs/heads/master origin/master" | ||
alias gpf="git push --force" | ||
alias gpunch="git push --force-with-lease" | ||
alias ggui="git gui" | ||
alias gcsam="git commit -S -am" | ||
# Stash aliases | ||
alias gst="git stash" | ||
alias gstb="git stash branch" | ||
alias gstd="git stash drop" | ||
alias gstl="git stash list" | ||
# Push introduced in git v2.13.2 | ||
alias gstpu="git stash push" | ||
alias gstpum="git stash push -m" | ||
# Save deprecated since git v2.16.0 | ||
# - aliases now resolve to push | ||
alias gsts="git stash push" | ||
alias gstsm="git stash push -m" | ||
# Alias gstpo added for symmetry with gstpu (push) | ||
# - gstp remains as alias for pop due to long-standing usage | ||
alias gstpo="git stash pop" | ||
alias gstp="git stash pop" | ||
# Switch aliases - Requires git v2.23+ | ||
alias gsw="git switch" | ||
alias gswm="git switch master" | ||
alias gswc="git switch --create" | ||
alias gswt="git switch --track" | ||
# Git home | ||
alias ghm='cd "$(git rev-parse --show-toplevel)"' | ||
if ! _command_exists gh; then | ||
alias gh='ghm' | ||
fi | ||
# Show untracked files | ||
alias gu='git ls-files . --exclude-standard --others' | ||
alias gsl='git shortlog -sn' | ||
|
||
# show | ||
alias gsh='git show' | ||
|
||
# Git SVN | ||
alias gsr='git svn rebase' | ||
# svn | ||
alias gsd='git svn dcommit' | ||
alias gsr='git svn rebase' # Git SVN | ||
|
||
# stash | ||
alias gst='git stash' | ||
alias gstb='git stash branch' | ||
alias gstd='git stash drop' | ||
alias gstl='git stash list' | ||
alias gstp='git stash pop' # kept due to long-standing usage | ||
alias gstpo='git stash pop' # recommended for it's symmetry with gstpu (push) | ||
|
||
## 'stash push' introduced in git v2.13.2 | ||
alias gstpu='git stash push' | ||
alias gstpum='git stash push -m' | ||
|
||
## 'stash save' deprecated since git v2.16.0, alias is now push | ||
alias gsts='git stash push' | ||
alias gstsm='git stash push -m' | ||
|
||
# submodules | ||
alias gsu='git submodule update --init --recursive' | ||
|
||
# switch | ||
# these aliases requires git v2.23+ | ||
alias gsw='git switch' | ||
alias gswc='git switch --create' | ||
alias gswm='git switch master' | ||
alias gswt='git switch --track' | ||
|
||
# tag | ||
alias gt='git tag' | ||
alias gta='git tag -a' | ||
alias gtd='git tag -d' | ||
alias gtl='git tag -l' | ||
|
||
case $OSTYPE in | ||
darwin*) | ||
alias gtls="git tag -l | gsort -V" | ||
;; | ||
*) | ||
alias gtls='git tag -l | sort -V' | ||
;; | ||
darwin*) | ||
alias gtls="git tag -l | gsort -V" | ||
;; | ||
*) | ||
alias gtls='git tag -l | sort -V' | ||
;; | ||
esac | ||
|
||
# functions | ||
function gdv() { | ||
git diff --ignore-all-space "$@" | vim -R - | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters