Skip to content

Instantly share code, notes, and snippets.

@jknopp
Forked from natescode/.gitconfig
Created August 10, 2023 17:00
Show Gist options
  • Save jknopp/b02f91361862fb2dfb70810352aa9cb7 to your computer and use it in GitHub Desktop.
Save jknopp/b02f91361862fb2dfb70810352aa9cb7 to your computer and use it in GitHub Desktop.
Git Aliases to make GIT easier to work with
[user]
email = your_email
name = your_username
[alias]
# view your global git config Aliases from CLI
aliases = config --get-regexp '^alias\\.'
# git clone
cl = !git clone
# Git shallow clone for large repos
clq= !git clone --depth=1
s = status
sw = switch
co = checkout
cob = checkout -b
feat = "!f(){ git cob feature/${1}; };f"
# Return the default branch for the repo i.e. master or main
default = !git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'
del = branch -D
br-clean = "!f() { DEFAULT=$(git default); git branch --merged ${1-$DEFAULT} | grep -v " ${1-$DEFAULT}$" | xargs git branch -d; }; f"
br = branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate
save = !git add -A && git commit -m
undo = reset HEAD~1 --mixed
# Saves work in an unreachable commit, just in case, THEN WIPES it from existance
wipe = !git add -A && git commit -qm 'WIPE SAVEPOINT' && git reset HEAD~1 --hard
done = "!f() { DEFAULT=$(git default); git checkout ${1-$DEFAULT} && git up && git br-clean ${1-$DEFAULT}; }; f"
# Pretty log
logs = !git log --pretty=format:\"%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) [%an]\" --abbrev-commit -30
last = log -1 HEAD
cm = commit -m
ci = commit
st = stash
pop = stash pop
apply = stash apply
# get config info i.e. git conf user.name
conf = config --global
# got user config i.e git user.name
user = config --global user
# quick work-in-progress commit
wip = commit -am "WIP"
# change commit message
amend = commit -a --amend
# Squash the last N commits. git squash 3, will reset the last 3 commits to the working directory then save them in a new commit
squash = "!f(){ git reset --soft HEAD~${1} && git commit --edit -m\"$(git log --format=%B --reverse HEAD..HEAD@{1})\"; };f"
# destage file(s)
destage = restore --staged
## sync current feature branch with origin/develop
syncod = !git fetch --all && git merge origin/develop
## sync current feature branch with given origin branch
sync = "!f(){ git fetch --all && git merge origin/${1}; };f"
# checkout develop branch
dev = !git checkout develop
# checkout the default branch i.e. master or main
ma = "!f() { DEFAULT=$(git default); git checkout ${1-$DEFAULT}; }; f"
master = !git checkout master
main = !git checkout main
dev = !git checkout develop
up = !git pull --rebase --prune $@ && git submodule update --init --recursive
# remove .git folder, maybe you `git init` in the wrong place
deinit = !rm -rf .git
# remove cache / cached file/directory
decache = !git rm -r --cached
[push]
default = current
# automatically setup remote branch tracking without --set-upstream-branch
autoSetupRemote = true
[pull]
default = current
rebase = false
[init]
defaultBranch = main
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment