Last active
March 17, 2022 22:15
-
-
Save AsafFisher/5b69a42027c62ead3de565eed49ce8a9 to your computer and use it in GitHub Desktop.
xonsh aliases
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
#!/usr/bin/env xonsh | |
from packaging import version as ver | |
# Git version checking | |
git_version = $(git version 2>/dev/null).split()[2] | |
# | |
# Functions | |
# | |
# Pretty log messages | |
def _git_log_prettily(): | |
if len($ARGS > 1): | |
git log --pretty=$ARG1 | |
# Warn if the current branch is a WIP | |
def work_in_progress(): | |
if $(git log -n 1 2>/dev/null | grep -q -c "\\-\\-wip\\-\\-"): | |
echo "WIP!!" | |
# Check if main exists and use instead of master | |
def git_main_branch(): | |
if !(git rev-parse --git-dir &>/dev/null).returncode != 0: | |
return | |
for branch in ["master", "main", "trunk"]: | |
if !(git show-ref -q --verify refs/heads/@(branch)).returncode == 0: | |
return branch | |
# | |
# Aliases | |
# (sorted alphabetically) | |
# | |
my_aliases = { | |
"ip": "ip -c", | |
"g": "git", | |
"ga": "git add", | |
"gaa": "git add --all", | |
"gapa": "git add --patch", | |
"gau": "git add --update", | |
"gav": "git add --verbose", | |
"gap": "git apply", | |
"gapt": "git apply --3way", | |
"gb": "git branch", | |
"gba": "git branch -a", | |
"gbd": "git branch -d", | |
"gbda": 'git branch --no-color --merged | command grep -vE "^(\\+|\\*|\\s*($(git_main_branch)|development|develop|devel|dev)\\s*$)" | command xargs -n 1 git branch -d', | |
"gbD": "git branch -D", | |
"gbl": "git blame -b -w", | |
"gbnm": "git branch --no-merged", | |
"gbr": "git branch --remote", | |
"gbs": "git bisect", | |
"gbsb": "git bisect bad", | |
"gbsg": "git bisect good", | |
"gbsr": "git bisect reset", | |
"gbss": "git bisect start", | |
"gc": "git commit -v", | |
"gc^": "git commit -v --amend", | |
"gcn^": "git commit -v --no-edit --amend", | |
"gca": "git commit -v -a", | |
"gca^": "git commit -v -a --amend", | |
"gcan^": "git commit -v -a --no-edit --amend", | |
"gcans^": "git commit -v -a -s --no-edit --amend", | |
"gcam": "git commit -a -m", | |
"gcsm": "git commit -s -m", | |
"gcb": "git checkout -b", | |
"gcf": "git config --list", | |
"gcl": "git clone --recurse-submodules", | |
"gclean": "git clean -id", | |
"gpristine": "git reset --hard && git clean -dffx", | |
"gcm": "git checkout $(git_main_branch)", | |
"gcd": "git checkout develop", | |
"gcmsg": "git commit -m", | |
"gco": "git checkout", | |
"gcount": "git shortlog -sn", | |
"gcp": "git cherry-pick", | |
"gcpa": "git cherry-pick --abort", | |
"gcpc": "git cherry-pick --continue", | |
"gcs": "git commit -S", | |
"gd": "git diff", | |
"gdca": "git diff --cached", | |
"gdcw": "git diff --cached --word-diff", | |
"gdct": "git describe --tags $(git rev-list --tags --max-count=1)", | |
"gds": "git diff --staged", | |
"gdt": "git diff-tree --no-commit-id --name-only -r", | |
"gdw": "git diff --word-diff", | |
} | |
def gdnolock(args, stdin=None): | |
git diff @(args) ":(exclude)package-lock.json" ":(exclude)*.lock" | |
def gdv(args, stdin=None): | |
if len(args) == 0: | |
return | |
git diff -w @(args) | view - | |
my_aliases |= { | |
"gdv": gdv, | |
"gdnolock": gdnolock, | |
"gf": "git fetch" | |
} | |
if ver.parse(git_version)>=ver.parse("2.8"): | |
my_aliases["gfa"] = "git fetch --all --prune --jobs=10" | |
else: | |
my_aliases["gfa"] = "git fetch --all --prune" | |
my_aliases|= { | |
"gfo": "git fetch origin", | |
"gfg": "git ls-files | grep", | |
"gg": "git gui citool", | |
"gga": "git gui citool --amend", | |
} | |
""" | |
TODO: | |
function ggf() { | |
[[ "$#" != 1 ]] && local b="$(git_current_branch)" | |
git push --force origin "${b:=$1}" | |
} | |
compdef _git ggf=git-checkout | |
function ggfl() { | |
[[ "$#" != 1 ]] && local b="$(git_current_branch)" | |
git push --force-with-lease origin "${b:=$1}" | |
} | |
compdef _git ggfl=git-checkout | |
function ggl() { | |
if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then | |
git pull origin "${*}" | |
else | |
[[ "$#" == 0 ]] && local b="$(git_current_branch)" | |
git pull origin "${b:=$1}" | |
fi | |
} | |
compdef _git ggl=git-checkout | |
function ggp() { | |
if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then | |
git push origin "${*}" | |
else | |
[[ "$#" == 0 ]] && local b="$(git_current_branch)" | |
git push origin "${b:=$1}" | |
fi | |
} | |
compdef _git ggp=git-checkout | |
function ggpnp() { | |
if [[ "$#" == 0 ]]; then | |
ggl && ggp | |
else | |
ggl "${*}" && ggp "${*}" | |
fi | |
} | |
compdef _git ggpnp=git-checkout | |
function ggu() { | |
[[ "$#" != 1 ]] && local b="$(git_current_branch)" | |
git pull --rebase origin "${b:=$1}" | |
} | |
compdef _git ggu=git-checkout | |
""" | |
my_aliases |= { | |
"ggpur": "ggu", | |
"ggpull": 'git pull origin "$(git_current_branch)"', | |
"ggpush": 'git push origin "$(git_current_branch)"', | |
"ggsup": "git branch --set-upstream-to=origin/$(git_current_branch)", | |
"gpsup": "git push --set-upstream origin $(git_current_branch)", | |
"ghh": "git help", | |
"gignore": "git update-index --assume-unchanged", | |
"gignored": 'git ls-files -v | grep "^[[:lower:]]"', | |
"git-svn-dcommit-push": "git svn dcommit && git push github $(git_main_branch):svntrunk", | |
"gk": "\\gitk --all --branches", | |
"gke": "\\gitk --all $(git log -g --pretty=%h)", | |
"gl": "git pull", | |
"glg": "git log --stat", | |
"glgp": "git log --stat -p", | |
"glgg": "git log --graph", | |
"glgga": "git log --graph --decorate --all", | |
"glgm": "git log --graph --max-count=10", | |
"glo": "git log --oneline --decorate", | |
"glol": "git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'", | |
"glols": "git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --stat", | |
"glod": "git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset'", | |
"glods": "git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short", | |
"glola": "git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --all", | |
"glog": "git log --oneline --decorate --graph", | |
"gloga": "git log --oneline --decorate --graph --all", | |
"glp": "_git_log_prettily", | |
"gm": "git merge", | |
"gmom": "git merge origin/$(git_main_branch)", | |
"gmt": "git mergetool --no-prompt", | |
"gmtvim": "git mergetool --no-prompt --tool=vimdiff", | |
"gmum": "git merge upstream/$(git_main_branch)", | |
"gma": "git merge --abort", | |
"gp": "git push", | |
"gpd": "git push --dry-run", | |
"gpf": "git push --force-with-lease", | |
"gpf^": "git push --force", | |
"gpoat": "git push origin --all && git push origin --tags", | |
"gpu": "git push upstream", | |
"gpv": "git push -v", | |
"gr": "git remote", | |
"gra": "git remote add", | |
"grb": "git rebase", | |
"grba": "git rebase --abort", | |
"grbc": "git rebase --continue", | |
"grbd": "git rebase develop", | |
"grbi": "git rebase -i", | |
"grbm": "git rebase $(git_main_branch)", | |
"grbs": "git rebase --skip", | |
"grev": "git revert", | |
"grh": "git reset", | |
"grhh": "git reset --hard", | |
"groh": "git reset origin/$(git_current_branch) --hard", | |
"grm": "git rm", | |
"grmc": "git rm --cached", | |
"grmv": "git remote rename", | |
"grrm": "git remote remove", | |
"grs": "git restore", | |
"grset": "git remote set-url", | |
"grss": "git restore --source", | |
"grst": "git restore --staged", | |
"grt": 'cd "$(git rev-parse --show-toplevel || echo .)"', | |
"gru": "git reset --", | |
"grup": "git remote update", | |
"grv": "git remote -v", | |
"gsb": "git status -sb", | |
"gsd": "git svn dcommit", | |
"gsh": "git show", | |
"gsi": "git submodule init", | |
"gsps": "git show --pretty=short --show-signature", | |
"gsr": "git svn rebase", | |
"gss": "git status -s", | |
"gst": "git status", | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment