Last active
November 15, 2023 12:10
-
-
Save iki/1ae5649c5b2891f1a0e1 to your computer and use it in GitHub Desktop.
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
# Edit this file as you like and merge with $HOME/.gitconfig (global) or .git/config (given repo only) | |
# | |
# See https://help.github.com/articles/set-up-git | |
# | |
# See http://git-scm.com/docs/git-config | |
# or http://www.kernel.org/pub/software/scm/git/docs/git-config.html | |
# | |
# See http://git-scm.com/book/en/Customizing-Git-Git-Configuration | |
# or http://progit.org/book/ch7-1.html | |
# | |
# See http://cheat.errtheblog.com/s/git | |
# or https://help.github.com/git-cheat-sheets | |
# | |
# See https://www.google.com/search?num=100&hl=en&ncr&q=gitconfig | |
[user] | |
# name = YourName | |
# email = [email protected] | |
[credential] | |
# helper = manager | |
# Git Credential Manager (GCM) for Win/Mac/Linux with 2FA GitHub/GitLab/Bitbucket/Azure support | |
# https://github.com/Microsoft/Git-Credential-Manager-for-Windows | |
# modalprompt = false | |
# GCM uses modal window prompt by default. When disabled, it only asks in console | |
# helper = store --file-~/.git-credentials | |
# Plaintext store | |
# helper = cache --username user --timeout 36000 | |
# Memory cache https credentials. | |
# helper = | |
# Disable credential manager | |
# On Windows, unset it also in system config, it's set there by installer | |
# Check `git config --get-all --show-origin credential.helper` | |
[http] | |
sslVerify = true | |
# Disable SSL only for projects where it is really needed. | |
[diff] | |
mnemonicprefix = true | |
[pull] | |
ff = only | |
rebase = true | |
[merge] | |
ff = true | |
[push] | |
default = upstream | |
[core] | |
# editor = code-insiders --wait | |
# Commit message and rebase editor. | |
eol = lf | |
# askpass = | |
# Do not prompt for credentials in console, use credential helper only. Can't be disabled, if helper is disabled already. | |
autocrlf = input | |
whitespace = fix,-indent-with-non-tab,trailing-space,-cr-at-eol | |
# See http://git-scm.com/book/en/Customizing-Git-Git-Configuration#Formatting-and-Whitespace | |
# See https://stackoverflow.com/questions/2517190/how-do-i-force-git-to-use-lf-instead-of-crlf-under-windows | |
longpaths = true | |
trustctime = false | |
filemode = false | |
# See https://github.com/msysgit/git/pull/122, | |
# and https://github.com/msysgit/git/pull/212. | |
excludesfile = ~/.gitignore | |
[alias] | |
a = add | |
af = add -f | |
an = add --ignore-removal | |
au = add --update | |
ap = add --patch | |
ai = add --interactive | |
aa = add --update . | |
aau = add --update . | |
aan = add --ignore-removal . | |
aaa = add --all . | |
aap = add --all . --patch | |
aai = add --all . --interactive | |
al = add --update :/ | |
alu = add --update :/ | |
aln = add --ignore-removal :/ | |
all = add --all | |
alp = add --all --patch | |
ali = add --all --interactive | |
bd = branch -d | |
bdd = branch -D | |
bdo = push origin --delete | |
bdr = branch -d -r | |
bdm = "!bdm(){ git bdd `git blm "$@"`; git rpo; }; bdm" | |
bdmd = "bdm develop" | |
blm = "!blm(){ local branch=\"$(git get-branch)\"; git br --format '%(refname:short)' --merged ${1:-main} | grep -v \"^\\(main\\|master\\|develop\\|dev\\|staging\\|demo\\|release\\|bkp\\|wip\\|tmp\\|$branch\\)$\"; }; blm" | |
blmd = "blm develop" | |
bm = branch -m | |
bp = !git with-optional-branch 4 git push -u origin | |
bpu = !git with-optional-branch 4 git push -u upstream | |
bpf = !git with-optional-branch 4 git push -fu origin | |
bpfu = !git with-optional-branch 4 git push -fu upstream | |
bpr = push -u | |
buu = branch --unset-upstream | |
br = branch | |
bra = branch -a | |
brc = branch --contains | |
brr = branch -r | |
bf = branch -f | |
bs = branch -f | |
bsm = branch -f main | |
bsms = branch -f master | |
bsd = branch -f develop | |
bsde = branch -f demo | |
bsdt = branch -f development | |
bsdv = branch -f dev | |
bss = branch -f staging | |
bsr = branch -f release | |
wip = "!wip(){ git cmaa \"WIP${1:+: $1}\"; }; wip" | |
tmp = branch -f tmp | |
bkp = branch -f bkp | |
bkps = "!bkps(){ git st && git cm \"${1:-bkp}\" && git bkp && git l0 && git ll0 && git rs1; }; bkps" | |
bkpa = "!bkpa(){ git st && git cma \"${1:-bkp}\" && git bkp && git l0 && git ll0 && git rs1; }; bkpa" | |
bkpaa = "!bkpaa(){ git st && git cmaa \"${1:-bkp}\" && git bkp && git l0 && git ll0 && git rs1; }; bkpaa" | |
bso = "!bso(){ git bs $1 origin/$1; }; bso" | |
bsu = "!bso(){ git bs $1 upstream/$1; }; bso" | |
bsom = branch -f main origin/main | |
bsoms = branch -f master origin/master | |
bsod = branch -f develop origin/develop | |
bsode = branch -f demo origin/demo | |
bsodt = branch -f development origin/development | |
bsodv = branch -f dev origin/dev | |
bsos = branch -f staging origin/staging | |
bsor = branch -f release origin/release | |
bsum = branch -f main upstream/main | |
bsums = branch -f master upstream/master | |
bsud = branch -f develop upstream/develop | |
bsude = branch -f demo upstream/demo | |
bsudt = branch -f development upstream/development | |
bsudv = branch -f dev upstream/dev | |
bsus = branch -f staging upstream/staging | |
bsur = branch -f release upstream/release | |
bsst = branch -f test/staging | |
bspt = branch -f test/production | |
bsost = push origin test/staging:test/staging -f | |
bsopt = push origin test/production:test/production -f | |
bu = branch -u | |
bom = branch -u origin/main | |
boms = branch -u origin/master | |
bod = branch -u origin/develop | |
bode = branch -u origin/demo | |
bodt = branch -u origin/development | |
bodv = branch -u origin/dev | |
bos = branch -u origin/staging | |
bor = branch -u origin/release | |
bum = branch -u upstream/main | |
bums = branch -u upstream/master | |
bud = branch -u upstream/develop | |
bude = branch -u upstream/demo | |
budt = branch -u upstream/development | |
budv = branch -u upstream/dev | |
bus = branch -u upstream/staging | |
bur = branch -u upstream/release | |
bb = "!bb(){ local branch=\"${1%.git}\" base=\"${2:-main}\"; [ -n \"$branch\" ] || return 2; git buc \"$branch.git\" \"$base..$branch\"; git bbl \"$branch\" \"$base\"; git bbs \"$branch\" \"$base\"; }; bb" | |
bbl = "!bbl(){ local branch=\"${1%.git}\" base=\"${2:-main}\"; [ -n \"$branch\" ] || return 2; git loc \"$base..$branch\" >\"$branch.txt\"; }; bbl" | |
bbs = "!bbs(){ local branch=\"${1%.git}\" base=\"${2:-main}\"; [ -n \"$branch\" ] || return 2; cat << --- >\"$branch.sh\"\n#!/bin/bash\n\nset -e\n\ngit bundle verify '$branch.git'\ngit checkout '$base'\ngit fetch '$branch.git' '$branch:$branch'\ngit --no-pager log --oneline '$base..$branch'\ngit checkout '$branch'\n\necho '# Force updating the remote branch: git push -u origin -f'\n---\n }; bbs" | |
bbx = "!bbx(){ local branch=\"${1%.git}\" base=\"${2:-main}\"; [ -n \"$branch\" ] || return 2; git buv \"$branch.git\" && git co \"$base\" && git fetch \"$branch.git\" \"$branch:$branch\" && git --no-pager log --oneline \"$base..$branch\" && git checkout \"$branch\" && echo '# Force updating the remote branch: git bpf'; }; bbx" | |
bu = bundle | |
buc = bundle create | |
buv = bundle verify | |
buh = bundle list-heads | |
bul = ls-remote | |
c = clone | |
ca = commit --amend -C HEAD | |
cae = commit --amend | |
cam = commit --amend -m | |
cau = commit --amend --reset-author | |
caa = commit --amend -a -C HEAD | |
caae = commit --amend -a | |
caam = commit --amend -a -m | |
caau = commit --amend -a --reset-author | |
ci = commit | |
cm = commit -m | |
cme = commit --allow-empty -m | |
cma = commit -a -m | |
cmaa = !git all && git commit -a -m | |
cn = commit --no-verify | |
cnm = commit --no-verify -m | |
cnma = commit --no-verify -a -m | |
cnmaa = !git all && git commit --no-verify -a -m | |
cc = cherry-pick --continue | |
cn = cherry-pick -n | |
cno = cherry-pick --strategy=recursive -Xours -n | |
cnt = cherry-pick --strategy=recursive -Xtheirs -n | |
cp = cherry-pick | |
cpa = cherry-pick --abort | |
cpc = cherry-pick --continue | |
cps = cherry-pick --skip | |
cpn = cherry-pick -n | |
cpr = "!cpr(){ git cherry-pick `for sha in "$@"; do echo "$sha"; done | tac`; }; cpr" | |
cprp = "!cpr(){ echo git cherry-pick `for sha in "$@"; do echo "$sha"; done | tac`; }; cpr" | |
cpo = cherry-pick --strategy=recursive -Xours -n | |
cpt = cherry-pick --strategy=recursive -Xtheirs -n | |
exe = update-index --add --chmod=+x | |
exe- = update-index --add --chmod=-x | |
chmodx = update-index --add --chmod=+x | |
chmodx- = update-index --add --chmod=-x | |
cl = clean | |
cla = clean -f :/ | |
clf = clean -f | |
cb = checkout -b | |
cbm = "!cbm(){ git cb \"$@\" main; }; cbm" | |
cbms = "!cbms(){ git cb \"$@\" master; }; cbms" | |
cbd = "!cbd(){ git cb \"$@\" develop; }; cbd" | |
cbr = "!cbr(){ git cb \"$@\" release; }; cbr" | |
ct = checkout -t | |
co = checkout | |
coh = checkout HEAD -- | |
co0 = checkout HEAD -- | |
co1 = checkout HEAD~1 -- | |
co2 = checkout HEAD~2 -- | |
co3 = checkout HEAD~3 -- | |
co4 = checkout HEAD~4 -- | |
com = checkout main -- | |
coms = checkout master -- | |
cod = checkout develop -- | |
codt = checkout development -- | |
codv = checkout dev -- | |
cos = checkout staging -- | |
coe = checkout demo -- | |
cor = checkout release -- | |
dang = "!dang(){ \"$@\" $(git fsck --no-reflog | sed -n "/^dangling commit /s/^dangling commit //p"); }; dangl(){ if [ $# = 0 ]; then dang git ll; else dang \"$@\"; fi; }; dangl" | |
dc = diff --ws-error-highlight=all --cached | |
df = diff --ws-error-highlight=all | |
dff = diff --ws-error-highlight=all --full-index | |
ds = diff --ws-error-highlight=all --staged | |
empty = "!empty(){ if git has-staged-changes; then echo \"Empty commit can't be inserted with staged changes:\" >&2; git staged; exit 1; else git commit --allow-empty -m \"chore: Add empty commit${1:+ to $1}\"; fi; }; empty" | |
f = fetch | |
fa = fetch -a -p -P | |
fo = fetch origin | |
fob = "!fob(){ git fo $1:$1; }; fob" | |
fop = fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* | |
fom = fetch origin main:main | |
foms = fetch origin master:master | |
fod = fetch origin develop:develop | |
fode = fetch origin demo:demo | |
fodt = fetch origin development:development | |
fodv = fetch origin dev:dev | |
fos = fetch origin staging:staging | |
for = fetch origin release:release | |
fu = fetch upstream | |
fup = fetch upstream +refs/pull/*/head:refs/remotes/origin/pr/* | |
fum = fetch upstream main:main | |
fums = fetch upstream master:master | |
fud = fetch upstream develop:develop | |
fude = fetch upstream demo:demo | |
fudt = fetch upstream development:development | |
fudv = fetch upstream dev:dev | |
fus = fetch upstream staging:staging | |
fur = fetch upstream release:release | |
g = pull | |
gf = "!gf(){ local branch=\"`git get-branch`\"; git cb tmp && git bdd \"$branch\" && git co \"$branch\"; }; gf" | |
go = pull origin | |
gof = "!gf(){ local branch=\"`git get-branch`\"; git cb tmp && git bdd \"$branch\" && git co \"origin/$branch\"; }; gf" | |
gu = pull upstream | |
guf = "!gf(){ local branch=\"`git get-branch`\"; git cb tmp && git bdd \"$branch\" && git co \"upstream/$branch\"; }; gf" | |
gr = grep -niP | |
gb = "!gb(){ git grep -niP \"$@\" | while IFS=: read i j k; do git blame --date=format:'%y-%m-%d %H:%M' -L \"$j,$j\" \"$i\"; done; }; gb" | |
gbp = "!gbp(){ git gb \"$@\" | sed 's/^[0-9a-f]\\+ (\\([A-Za-z -]\\+\\) \\([0-9-]\\{8\\} [0-9:]\\{5\\}\\) [0-9]\\+)\\s\\+\\(.*\\)$/\\2 | \\3 | \\1/' | sort; }; gbp" | |
get = config --get | |
geta = config --get-all --show-origin | |
getx = config --get-regexp --show-origin | |
getb = rev-parse --abbrev-ref HEAD | |
get-branch = rev-parse --abbrev-ref HEAD | |
getd = rev-parse --git-dir | |
get-dir = rev-parse --git-dir | |
getr = rev-parse --show-toplevel | |
get-root = rev-parse --show-toplevel | |
getu = !git get-url | |
get-url = "!geturl(){ local remote=\"${1:-origin}\"; shift; git remote get-url \"$remote\" \"$@\" | sed 's/\\/$//;s/\\.git//'; }; geturl" | |
geti = rev-list --max-parents=0 HEAD | |
get-initial-commit = rev-list --max-parents=0 HEAD | |
h = "!h(){ git \"$@\" --help; }; h" | |
ha = config --get-regexp alias | |
hc = config --list --show-origin | |
he = config --global --edit | |
hg = !cat "${HOME:-$UserProfile}/.gitconfig" | |
hgi = !cat "${HOME:-$UserProfile}/.gitignore" | |
hgc = config --global --list | |
hge = config --global --edit | |
hl = !cat "`git get-dir`/config" | |
hli = !cat "`git get-dir`/info/exclude" "`git get-root`/.gitignore" | |
hlc = config --local --list | |
hle = config --local --edit | |
hal = !git less ha | |
hcl = !git less hc | |
hgl = !git less hg | |
hgil = !git less hgi | |
hgcl = !git less hgc | |
hll = !git less hl | |
hlil = !git less hli | |
hlcl = !git less hlc | |
hag = !git greps ha | |
hcg = !git greps hc | |
hgg = !git greps hg | |
hgig = !git greps hgi | |
hgcg = !git greps hgc | |
hlg = !git greps hl | |
hlig = !git greps hli | |
hlcg = !git greps hlc | |
has-ref = git show-ref -q | |
has-tag = git show-ref -q --tags | |
has-branch = git show-ref -q --heads | |
has-changes = "!! git has-no-changes" | |
has-staged-changes = "!! git has-no-staged-changes" | |
has-unstaged-changes = "!! git has-no-unstaged-changes" | |
has-no-changes = diff-index --quiet HEAD -- | |
has-no-staged-changes = diff-index --cached --quiet HEAD -- | |
has-no-unstaged-changes = diff-files --ignore-submodules --quiet -- | |
changes = diff-index --name-status HEAD -- | |
staged = diff-index --name-status --cached HEAD -- | |
unstaged = diff-files --name-status --ignore-submodules -- | |
greps = "!g(){ git \"$1\" | grep -i \"$2\"; }; g" | |
less = "!l(){ git \"$@\" | less; }; l" | |
ign = update-index --assume-unchanged | |
ign- = update-index --no-assume-unchanged | |
np = !git --no-pager | |
l = log --decorate --abbrev-commit --format=format:'%C(auto)%h %cd %C(cyan)%<(13,mtrunc)%an %C(auto)%d %s' --date=format:'%y-%m-%d %H:%M' | |
lu = l --author | |
lt = l --since | |
lm = !git lu `git get user.email` | |
lc = np l | |
lh = lc -1 | |
l0 = lc -1 | |
l1 = lc -10 | |
l2 = lc -20 | |
l3 = lc -30 | |
l4 = lc -40 | |
l5 = lc -50 | |
lp = log --oneline | |
lpu = lp --author | |
lpt = lp --since | |
lpm = !git lpu `git get user.email` | |
lpc = np lp | |
lph = lpc -1 | |
lp1 = lpc -10 | |
lp2 = lpc -20 | |
lp3 = lpc -30 | |
lp4 = lpc -40 | |
lp5 = lpc -50 | |
la = l --all | |
lau = la --author | |
lat = la --since | |
lam = !git lau `git get user.email` | |
lac = np la | |
lah = lac -1 | |
la0 = lac -1 | |
la1 = lac -10 | |
la2 = lac -20 | |
la3 = lac -30 | |
la4 = lac -40 | |
la5 = lac -50 | |
lg = la --graph | |
lgu = lg --author | |
lgt = lg --since | |
lgm = !git lgu `git get user.email` | |
lgc = np lg | |
lgh = lgc -1 | |
lg1 = lgc -10 | |
lg2 = lgc -20 | |
lg3 = lgc -30 | |
lg4 = lgc -40 | |
lg5 = lgc -50 | |
lf = l --name-status | |
lfu = lf --author | |
lft = lf --since | |
lfm = !git lfu `git get user.email` | |
lfc = np lf | |
lfh = lf -1 | |
lf0 = lf -1 | |
lf1 = lf -10 | |
lf2 = lf -20 | |
lf3 = lf -30 | |
lf4 = lf -40 | |
lf5 = lf -50 | |
ll = l --stat | |
llu = ll --author | |
llt = ll --since | |
llm = !git llu `git get user.email` | |
llc = np ll | |
llh = ll -1 | |
ll0 = ll -1 | |
ll1 = ll -10 | |
ll2 = ll -20 | |
ll3 = ll -30 | |
ll4 = ll -40 | |
ll5 = ll -50 | |
ls = ls-files | |
lsi = ls-files --ignored | |
lso = ls-files --other | |
lss = ls-files --stage | |
lsx = ls-files --exclude-standard | |
lsr = ls-remote | |
mg = merge | |
mgn = merge --no-commit | |
mgo = merge -s recursive -X ours | |
mgt = merge -s recursive -X theirs | |
mn = merge --no-commit | |
mno = merge -s recursive -X ours --no-commit | |
mnt = merge -s recursive -X theirs --no-commit | |
mt = mergetool | |
o = !git open-url | |
open = !git open-url | |
open-url = "!mute(){ \"$@\" >/dev/null 2>&1; }; has(){ mute which \"$1\"; }; openurl(){ if [ \"$OS\" = 'Windows_NT' ]; then start \"\" \"$@\"; elif [ \"`uname`\" == 'Darwin' ]; then open -- \"$@\"; elif has xdg-open; then xdg-open -- \"$@\"; elif has gnome-open; then gnome-open -- \"$@\"; elif has python; then python -m webbrowser -- \"$@\"; else echo \"Open: $@\"; fi; }; openurl" | |
on = "!on_branch(){ [ \"`git branch --show-current`\" = \"$1\" ]; }; on_branch" | |
onm = !git on main | |
onms = !git on master | |
ond = !git on develop | |
onde = !git on demo | |
ondt = !git on development | |
ondv = !git on dev | |
ons = !git on staging | |
onr = !git on release | |
mr = "!mr() { [ \"$1\" = '-h' ] && echo \"Usage: git mr [source-branch (.=current)] [target-branch (main)] [remote (origin)]\" && exit; source=\"${1:-.}\"; target=\"${2:-main}\"; remote=\"${3:-origin}\"; [ \"$source\" != . ] || source=\"`git get-branch`\" && [ -n \"$source\" -a \"$source\" != \"$target\" ] || exit $?; echo \"Create GitLab Merge Request to '$target' from '$source'\"; git --no-pager log --oneline \"$target..$source\" || exit $?; echo; git push --set-upstream \"$remote\" \"$source\" || exit $?; git open-url \"`git get-url \"$remote\"`/merge_requests/new?merge_request[source_branch]=$source&merge_request[target_branch]=$target\"; }; mr" | |
mrm = mr . main | |
mrms = mr . master | |
mrd = mr . develop | |
mrde = mr . demo | |
mrdt = mr . development | |
mrdv = mr . dev | |
mrs = mr . staging | |
mrr = mr . release | |
pr = "!pr() { [ \"$1\" = '-h' ] && echo \"Usage: git pr [source-branch (.=current)] [target-branch (main)] [remote (origin)]\" && exit; source=\"${1:-.}\"; target=\"${2:-main}\"; remote=\"${3:-origin}\"; [ \"$source\" != . ] || source=\"`git get-branch`\" && [ -n \"$source\" -a \"$source\" != \"$target\" ] || exit $?; echo \"Create GitHub Pull Request to '$target' from '$source'\"; git --no-pager log --oneline \"$target..$source\" || exit $?; echo; git push --set-upstream \"$remote\" \"$source\" || exit $?; git open-url \"`git get-url \"$remote\"`/compare/$target...$source\"; }; pr" | |
prm = pr . main | |
prms = pr . master | |
prd = pr . develop | |
prde = pr . demo | |
prdt = pr . development | |
prdv = pr . dev | |
prs = pr . staging | |
prr = pr . release | |
p = push | |
pf = push --force-with-lease | |
pff = push --force | |
pn = push --no-verify | |
px = push --delete | |
po = push origin | |
poa = push origin : | |
pof = push origin --force-with-lease | |
poff = push origin --force | |
pon = push origin --no-verify | |
pou = push origin --set-upstream | |
pox = push origin --delete | |
pom = push origin main:main | |
poms = push origin master:master | |
pod = push origin develop:develop | |
pode = push origin demo:demo | |
podt = push origin development:development | |
podv = push origin dev:dev | |
pos = push origin staging:staging | |
por = push origin release:release | |
pomf = push origin main:main --force-with-lease | |
pomsf = push origin master:master --force-with-lease | |
podf = push origin develop:develop --force-with-lease | |
podef = push origin demo:demo --force-with-lease | |
podtf = push origin development:development --force-with-lease | |
podvf = push origin dev:dev --force-with-lease | |
posf = push origin staging:staging --force-with-lease | |
porf = push origin release:release --force-with-lease | |
pomff = push origin main:main --force | |
pomsff = push origin master:master --force | |
podff = push origin develop:develop --force | |
podeff = push origin demo:demo --force | |
podtff = push origin development:development --force | |
podvff = push origin dev:dev --force | |
posff = push origin staging:staging --force | |
porff = push origin release:release --force | |
post = push origin test/staging:test/staging --force | |
popt = push origin test/production:test/productin --force | |
pt = push --tags | |
ptf = push --tags --force | |
pu = push upstream | |
pua = push upstream : | |
puf = push upstream --force-with-lease | |
puff = push upstream --force | |
pun = push upstream --no-verify | |
puu = push upstream --set-upstream | |
pux = push upstream --delete | |
pum = push upstream main:main | |
pums = push upstream master:master | |
pud = push upstream develop:develop | |
pude = push upstream demo:demo | |
pudt = push upstream development:development | |
pudv = push upstream dev:dev | |
pur = push upstream release:release | |
pus = push upstream staging:staging | |
r = reset | |
rp = reset --patch | |
r0 = reset HEAD -- | |
r1 = reset HEAD~1 -- | |
r2 = reset HEAD~2 -- | |
r3 = reset HEAD~3 -- | |
r4 = reset HEAD~4 -- | |
rhh = reset --hard | |
rhh0 = reset --hard HEAD -- | |
rhh1 = reset --hard HEAD~1 -- | |
rhh2 = reset --hard HEAD~2 -- | |
rhh3 = reset --hard HEAD~3 -- | |
rhh4 = reset --hard HEAD~4 -- | |
rs = reset --soft | |
rs0 = reset --soft HEAD -- | |
rs1 = reset --soft HEAD~1 -- | |
rs2 = reset --soft HEAD~2 -- | |
rs3 = reset --soft HEAD~3 -- | |
rs4 = reset --soft HEAD~4 -- | |
ra = remote add | |
rau = remote add upstream | |
rp = remote prune | |
rpo = remote prune origin | |
rpp = remote prune upstream | |
rv = remote -v | |
rb = rebase | |
rbt = rebase -m -s recursive -X ours | |
rbo = rebase -m -s recursive -X theirs | |
rba = rebase --abort | |
rbc = rebase --continue | |
rbca = !git st && git al && git rbc | |
rbi = rebase --interactive | |
rbid = rebase --interactive develop | |
rbie = rebase --interactive dev | |
rbim = rebase --interactive main | |
rbims = rebase --interactive master | |
rbis = rebase --interactive staging | |
rb- = rebase --skip | |
rc = rebase --continue | |
ri = rebase --interactive | |
rbm = rebase main | |
rbms = rebase master | |
rbd = rebase develop | |
rbde = rebase demo | |
rbdt = rebase development | |
rbdv = rebase dev | |
rbs = rebase staging | |
rbr = rebase release | |
rbtm = rebase -m -s recursive -X ours main | |
rbtms = rebase -m -s recursive -X ours master | |
rbtd = rebase -m -s recursive -X ours develop | |
rbtde = rebase -m -s recursive -X ours demo | |
rbtdt = rebase -m -s recursive -X ours development | |
rbtdv = rebase -m -s recursive -X ours dev | |
rbts = rebase -m -s recursive -X ours staging | |
rbtr = rebase -m -s recursive -X ours release | |
s = status | |
st = status | |
su = status -uno | |
set = config --set | |
setg = config --global --set | |
sets = config --system --set | |
sh = show --ws-error-highlight=all | |
sh0 = show --ws-error-highlight=all HEAD -- | |
sh1 = show --ws-error-highlight=all HEAD~1 -- | |
sh2 = show --ws-error-highlight=all HEAD~2 -- | |
sh3 = show --ws-error-highlight=all HEAD~3 -- | |
sl = stash list | |
sl0 = show --ws-error-highlight=all stash@{0} -- | |
sl1 = show --ws-error-highlight=all stash@{1} -- | |
sl2 = show --ws-error-highlight=all stash@{2} -- | |
sl3 = show --ws-error-highlight=all stash@{3} -- | |
sa = stash apply | |
sa0 = stash apply stash@{0} | |
sa1 = stash apply stash@{1} | |
sa2 = stash apply stash@{2} | |
sa3 = stash apply stash@{3} | |
sb = stash branch | |
sd0 = stash drop stash@{0} | |
sd1 = stash drop stash@{1} | |
sd2 = stash drop stash@{2} | |
sd3 = stash drop stash@{3} | |
sda = stash clear | |
sdd = stash drop | |
sp = stash pop | |
sp0 = stash pop stash@{0} | |
sp1 = stash pop stash@{1} | |
sp2 = stash pop stash@{2} | |
sp3 = stash pop stash@{3} | |
ss = stash save | |
ssa = stash save -a | |
ssk = stash save -k | |
ssp = stash save -p | |
ssu = stash save -a -u | |
sm = submodule | |
smc = submodule foreach git checkout | |
smcd = submodule foreach git checkout develop | |
smg = submodule foreach git | |
smi = submodule init | |
smp = submodule foreach git pull | |
sms = submodule sync | |
smu = submodule update | |
smui = submodule update --init | |
smv = submodule status | |
smx = submodule foreach | |
stats = count-objects -vH | |
t = tag -l | |
tc = "!tc(){ git tm \"$1\" \"$1\"; }; tc" | |
tcp = "!tc(){ git tm \"$1\" \"$1\" && git pt; }; tc" | |
ts = "!ts(){ git tda \"$1\" && git tc \"$1\"; }; ts" | |
tsp = "!ts(){ git tda \"$1\" && git tc \"$1\" && git pt; }; ts" | |
ta = tag -a | |
td = tag -d | |
tdo = push origin --delete | |
tda = "!tda(){ git td \"$1\" && git tdo \"$1\"; }; tda" | |
tl = tag -l -n1 | |
tm = tag -m | |
tv = tag -v | |
tp = push --tags | |
tr = show-ref --tags --dereference | |
up = update-git-for-windows | |
with-optional-branch = "!wob(){ local N=\"$1\"; shift; if [ \"$#\" = \"$N\" ]; then \"$@\" \"`git get-branch`\"; else \"$@\"; fi; }; wob" | |
[color] | |
ui = auto | |
[color "branch"] | |
current = cyan bold | |
local = yellow | |
remote = green | |
[color "diff"] | |
meta = yellow bold | |
frag = magenta bold | |
old = red bold | |
new = green bold | |
whitespace = red reverse | |
[color "status"] | |
added = yellow | |
changed = green | |
untracked = cyan | |
[filter "lfs"] | |
clean = git-lfs clean -- %f | |
smudge = git-lfs smudge -- %f | |
process = git-lfs filter-process | |
required = true |
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
# Ignores the specified file/directory glob patterns | |
# from being tracked in a git repository. | |
# | |
# An untracked file is ignored if its path relative to the repository root directory, | |
# or any prefix path of that path, is matched. | |
# Files are only ignored when being added or updated. | |
# Untrack already tracked files with `git rm --cached filename`. | |
# Force adding or updating ignored file with `git add -f filename`. | |
# | |
# Blank lines or lines starting with # are ignored. | |
# Standard glob patterns work (~, ?, *, [characterset]). | |
# You can end patterns with a forward slash (/) to match a directory explicitly. | |
# You can negate a pattern by starting it with an exclamation point (!). | |
# | |
# See http://help.github.com/git-ignore/ | |
# See http://git-scm.com/docs/gitignore.html | |
# See http://git-scm.com/book/ch2-2.html#ignoring_files | |
# See http://google.com/search?num=100&hl=en&q=gitignore | |
# See https://github.com/github/gitignore | |
# | |
# Test the pattern matches by printing all untracked files in the current repository | |
# `git ls-files --others --exclude-from=.git/info/exclude` | |
# Note, that it only excludes patterns in a non-shared settings in .git/info/exclude. | |
# Hidden directories: | |
#.*/ | |
# User ignored files: | |
\!\!* | |
..* | |
# Mercurial repository info: | |
.hg/ | |
# Local configuration: | |
.idea/ | |
# .vscode/ | |
# Local envs: | |
.env.local | |
.env.*.local | |
# Executable scripts (no extension, or python version at the end) in bin: | |
# bin/* | |
# !bin/*.* | |
# bin/*-?.? | |
# Compiled source: | |
*.com | |
*.class | |
*.dll | |
*.exe | |
*.o | |
*.so | |
*.py[oc] | |
*-script.py | |
# Packages: | |
# - it's better to unpack these files and commit the raw source | |
# git has its own built in compression methods | |
*.7z | |
*.dmg | |
*.gz | |
*.iso | |
*.jar | |
*.rar | |
*.tar | |
*.zip | |
# Databases: | |
# *.sqlite | |
# Log files: | |
*.log | |
*.log.* | |
*-log.* | |
*-log-* | |
*-progress-* | |
# OS generated files: | |
.DS_Store | |
.DS_Store? | |
._* | |
.Spotlight-V100 | |
.Trashes | |
ehthumbs.db | |
Thumbs.db | |
# Backup files | |
*~ | |
*.bak | |
*.swp | |
*.orig | |
*.tmp | |
# Distribute/setuptools bootstrap: | |
distribute_setup.* | |
ez_setup.* | |
# Build and dist directories: | |
.sass-cache/ | |
=build/ | |
build/ | |
dist/ | |
dist.zip | |
*.egg-info | |
# Buildout files and directories: | |
var/ | |
eggs/ | |
.installed.cfg | |
.mr.developer.cfg | |
# Temporary directories: | |
.tmp/ | |
tmp/ | |
# Auth files: | |
oauth.txt | |
apps.yaml |
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
#!/bin/sh | |
# For package.json: | |
# "release": "sh -c \"mr() { [ \\\"$1\\\" = '-h' ] && echo \\\"Usage: git mr [source-branch (.=staging)] [target-branch (master)] [remote (origin)]\\\" && exit; source=\\\"${1:-staging}\\\"; target=\\\"${2:-master}\\\"; remote=\\\"${3:-origin}\\\"; push=; [ \\\"$source\\\" != . ] || { source=\\\"`git get-branch`\\\" && [ -n \\\"$source\\\" -a \\\"$source\\\" != \\\"$target\\\" ] && push=true; } || exit $?; echo \\\"Create merge request to '$remote/$target' from ${push:+pushed current branch }'$source'\\\"; git fetch \\\"$remote\\\" || exit $?; git --no-pager log --oneline \\\"$target..$source\\\" || exit $?; echo; [ -z $push ] || git push --set-upstream \\\"$remote\\\" \\\"$source\\\" || exit $?; git open \\\"`git get-url \\\"$remote\\\"`\\\"'/merge_requests/new?merge_request[source_branch]='\\\"$source\\\"'&merge_request[target_branch]='\\\"$target\\\"; }; mute(){ \\\"$@\\\" >/dev/null 2>&1; }; has(){ mute which \\\"$1\\\"; }; o(){ if [ \\\"$OS\\\" = 'Windows_NT' ]; then start \\\"\\\" \\\"$@\\\"; elif [ \\\"`uname`\\\" == 'Darwin' ]; then open -- \\\"$@\\\"; elif has xdg-open; then xdg-open -- \\\"$@\\\"; elif has gnome-open; then gnome-open -- \\\"$@\\\"; elif has python; then python -m webbrowser -- \\\"$@\\\"; else echo \\\"Open: $@\\\"; fi; }; geturl(){ local remote=\\\"${1:-origin}\\\"; shift; git remote get-url \\\"$remote\\\" \\\"$@\\\" | sed 's/\\\\/$//;s/\\\\.git//'; }; mr\"", | |
# "hotfix": "sh -c \"mr() { [ \\\"$1\\\" = '-h' ] && echo \\\"Usage: git mr [source-branch (.=current)] [target-branch (master)] [remote (origin)]\\\" && exit; source=\\\"${1:-.}\\\"; target=\\\"${2:-master}\\\"; remote=\\\"${3:-origin}\\\"; push=; [ \\\"$source\\\" != . ] || { source=\\\"`git get-branch`\\\" && [ -n \\\"$source\\\" -a \\\"$source\\\" != \\\"$target\\\" ] && push=true; } || exit $?; echo \\\"Create merge request to '$remote/$target' from ${push:+pushed current branch }'$source'\\\"; git fetch \\\"$remote\\\" || exit $?; git --no-pager log --oneline \\\"$target..$source\\\" || exit $?; echo; [ -z $push ] || git push --set-upstream \\\"$remote\\\" \\\"$source\\\" || exit $?; git open \\\"`git get-url \\\"$remote\\\"`\\\"'/merge_requests/new?merge_request[source_branch]='\\\"$source\\\"'&merge_request[target_branch]='\\\"$target\\\"; }; mute(){ \\\"$@\\\" >/dev/null 2>&1; }; has(){ mute which \\\"$1\\\"; }; o(){ if [ \\\"$OS\\\" = 'Windows_NT' ]; then start \\\"\\\" \\\"$@\\\"; elif [ \\\"`uname`\\\" == 'Darwin' ]; then open -- \\\"$@\\\"; elif has xdg-open; then xdg-open -- \\\"$@\\\"; elif has gnome-open; then gnome-open -- \\\"$@\\\"; elif has python; then python -m webbrowser -- \\\"$@\\\"; else echo \\\"Open: $@\\\"; fi; }; geturl(){ local remote=\\\"${1:-origin}\\\"; shift; git remote get-url \\\"$remote\\\" \\\"$@\\\" | sed 's/\\\\/$//;s/\\\\.git//'; }; mr\"", | |
# "mr": "sh -c \"mr() { [ \\\"$1\\\" = '-h' ] && echo \\\"Usage: git mr [source-branch (.=current)] [target-branch (staging)] [remote (origin)]\\\" && exit; source=\\\"${1:-.}\\\"; target=\\\"${2:-staging}\\\"; remote=\\\"${3:-origin}\\\"; push=; [ \\\"$source\\\" != . ] || { source=\\\"`git get-branch`\\\" && [ -n \\\"$source\\\" -a \\\"$source\\\" != \\\"$target\\\" ] && push=true; } || exit $?; echo \\\"Create merge request to '$remote/$target' from ${push:+pushed current branch }'$source'\\\"; git fetch \\\"$remote\\\" || exit $?; git --no-pager log --oneline \\\"$target..$source\\\" || exit $?; echo; [ -z $push ] || git push --set-upstream \\\"$remote\\\" \\\"$source\\\" || exit $?; git open \\\"`git get-url \\\"$remote\\\"`\\\"'/merge_requests/new?merge_request[source_branch]='\\\"$source\\\"'&merge_request[target_branch]='\\\"$target\\\"; }; mute(){ \\\"$@\\\" >/dev/null 2>&1; }; has(){ mute which \\\"$1\\\"; }; o(){ if [ \\\"$OS\\\" = 'Windows_NT' ]; then start \\\"\\\" \\\"$@\\\"; elif [ \\\"`uname`\\\" == 'Darwin' ]; then open -- \\\"$@\\\"; elif has xdg-open; then xdg-open -- \\\"$@\\\"; elif has gnome-open; then gnome-open -- \\\"$@\\\"; elif has python; then python -m webbrowser -- \\\"$@\\\"; else echo \\\"Open: $@\\\"; fi; }; geturl(){ local remote=\\\"${1:-origin}\\\"; shift; git remote get-url \\\"$remote\\\" \\\"$@\\\" | sed 's/\\\\/$//;s/\\\\.git//'; }; mr\"" | |
# For .gitconfig [alias]: | |
# mr = "!mr() { [ \"$1\" = '-h' ] && echo \"Usage: git mr [source-branch (.=current)] [target-branch (master)] [remote (origin)]\" && exit; source=\"${1:-.}\"; target=\"${2:-master}\"; remote=\"${3:-origin}\"; [ \"$source\" != . ] || source=\"`git get-branch`\" && [ -n \"$source\" -a \"$source\" != \"$target\" ] || exit $?; echo \"Create GitLab Merge Request to '$target' from '$source'\"; git --no-pager log --oneline \"$target..$source\" || exit $?; echo; git push --set-upstream \"$remote\" \"$source\" || exit $?; git open-url \"`git get-url \"$remote\"`/merge_requests/new?merge_request[source_branch]=$source&merge_request[target_branch]=$target\"; }; mr" | |
# open-url = "!mute(){ \"$@\" >/dev/null 2>&1; }; has(){ mute which \"$1\"; }; openurl(){ if [ \"$OS\" = 'Windows_NT' ]; then start \"\" \"$@\"; elif [ \"`uname`\" == 'Darwin' ]; then open -- \"$@\"; elif has xdg-open; then xdg-open -- \"$@\"; elif has gnome-open; then gnome-open -- \"$@\"; elif has python; then python -m webbrowser -- \"$@\"; else echo \"Open: $@\"; fi; }; openurl" | |
mute(){ "$@" >/dev/null 2>&1; }; has(){ mute which "$1"; }; | |
openurl(){ if [ "$OS" = 'Windows_NT' ]; then start "" "$@"; elif [ "`uname`" == 'Darwin' ]; then open -- "$@"; elif has xdg-open; then xdg-open -- "$@"; elif has gnome-open; then gnome-open -- "$@"; elif has python; then python -m webbrowser -- "$@"; else echo "Open: $@"; fi; }; | |
geturl(){ local remote="${1:-origin}"; shift; git remote get-url "$remote" "$@" | sed 's/\/$//;s/\.git//'; }; | |
mr() { [ "$1" = '-h' ] && echo "Usage: git mr [source-branch (.=current)] [target-branch (master)] [remote (origin)]" && exit; source="${1:-.}"; target="${2:-master}"; remote="${3:-origin}"; [ "$source" != . ] || source="`git get-branch`" && [ -n "$source" -a "$source" != "$target" ] || exit $?; echo "Create GitLab Merge Request to '$target' from '$source'"; git --no-pager log --oneline "$target..$source" || exit $?; echo; git push --set-upstream "$remote" "$source" || exit $?; openurl "`geturl "$remote"`/merge_requests/new?merge_request[source_branch]=$source&merge_request[target_branch]=$target"; }; | |
mr "$@" |
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
@call bash "%~dpn0" %* | |
@exit /b %errorlevel% |
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
#!/bin/bash | |
set -e | |
! [ -f ~/.gitconfig ] || cp ~/.gitconfig .gitconfig | |
! [ -f ~/.gitignore ] || cp ~/.gitignore .gitignore | |
sed -i -f - .gitconfig << --- | |
/^\s*\(name\|email\|editor\|recentlySeenVersion\)\b/d | |
/^\s*\(helper\|modalprompt\|askpass\)\b/s/^\(\s*\)/\1# / | |
--- | |
! [ -f ~/.gitconfig ] || diff -Z ~/.gitconfig .gitconfig || true | |
git diff |
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
@call bash "%~dpn0" %* | |
@exit /b %errorlevel% |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment