[user] name = Anton Bobov email = anton@bobov.name signingkey = B4DCCEF7CE0E6AF3 [commit] gpgsign = true verbose = true [tag] gpgsign = true sort = version:refname [http] sslVerify = false [color "diff-highlight"] oldNormal = red bold oldHighlight = red bold reverse [color "diff"] meta = 11 frag = magenta bold commit = yellow bold old = red bold new = green bold whitespace = red reverse [diff] algorithm = histogram tool = vimdiff colorMoved = true submodule = log mnemonicprefix = true [diff-so-fancy] stripLeadingSymbols = false markEmptyLines = false [grep] lineNumber = true [merge] conflictstyle = zdiff3 stat = true tool = vimdiff [core] pager = diff-so-fancy | less -+$LESS -FRX excludesfile = ~/.gitignore quotepath = false [log] decorate = short mailmap = true date = iso-local [alias] aa = add --all amend = commit --amend ar = !sh -c 'git archive --format=tar --prefix="$(basename "$PWD")-$1/" $1^{tree} | bzip2 >"$(basename "$PWD")-$1.tar.bz2"' - br = branch --sort=-committerdate blame = blame -w -C -C -C acm = !git add --all && git commit -m c = commit --verbose co = checkout ci = commit diffstat = diff --stat -r dc = diff --find-copies-harder --cached di = diff --find-copies-harder dshow = "!f() { DFT_BACKGROUND=light git -c diff.external=difft show --ext-diff $@; }; f" dlog = "!f() { DFT_BACKGROUND=light git -c diff.external=difft log -p --ext-diff $@; }; f" ddiff = "!f() { DFT_BACKGROUND=light git -c diff.external=difft diff $@; }; f" fix = commit --amend -C HEAD try = merge --no-commit --no-ff history-all = "!gitk --all $( git fsck | awk '/dangling commit/ {print $3}'; git log -g --pretty='format:%H')" k = !sh -c 'gitk $1' - ka = !sh -c 'gitk --all' - kb = !sh -c 'gitk --branches' - lg = log --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%aN>%Creset' --abbrev-commit --date=relative l = "!git lg -10" f = !sh -c 'git branch | grep -F "feature/$1" | xargs -r -n 1 git co' - st = status stashlist = stash list --date=short stash-all = stash save --include-untracked sha = rev-parse --short addnw = !sh -c 'git diff --unified=0 --ignore-all-space --no-color "$@" | git apply --cached --ignore-whitespace --unidiff-zero -' branch-name = "!git rev-parse --abbrev-ref HEAD" pushf = push --force-with-lease publish = "!git push -u origin $(git branch-name)" # https://datagrok.org/git/git-serve/ quickserve="daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/" # https://github.com/anishathalye/dotfiles/blob/master/gitconfig update-submodules = submodule update --init --recursive upgrade-submodules = submodule update --init --remote wc = whatchanged -p --abbrev-commit --pretty=medium undo = reset --soft HEAD~ whoami = config user.email fugitive = mergetool --tool fugitive clean-branches = !sh -c 'git branch --merged | grep -v '^*' | fzf -m | xargs -rp git branch -d' co-before = !sh -c 'git rev-list -1 --before="$@" HEAD | xargs -r git checkout' - ri = rebase --interactive rc = rebase --continue ra = rebase --abort rx = rebase --exec prebase = rebase -x 'chronic pre-commit run --from-ref HEAD~ --to-ref HEAD' # Gitlab merge requests helpers mr = !sh -c 'git fetch $1 merge-requests/$2/head:mr-$1-$2 && git checkout mr-$1-$2' - mr-clean = "!git for-each-ref refs/heads/mr/* --format='%(refname)' | while read ref ; do branch=${ref#refs/heads/} ; git branch -D $branch ; done" recent = "!git for-each-ref --color=always --sort=-committerdate refs/heads --format='%(HEAD)%(color:yellow)%(refname:short)|%(color:magenta)%(authorname)%(color:reset)|%(color:bold green)%(committerdate:relative)|%(color:red)%(objectname:short)%(color:reset)'|column -ts'|'" edit-exclude = "!f() { GIT_DIR=\"$(git rev-parse --git-dir 2>/dev/null)\"; $EDITOR \"$GIT_DIR/info/exclude\"; }; f" [advice] statusHints = false detachedHead = false [branch] autosetupmerge = always autosetuprebase = local sort = -committerdate [rebase] instructionFormat = %s [%aN] {%ar} autoStash = true updateRefs = true autoSquash = true [rerere] autoUpdate = true enabled = true [status] submoduleSummary = true [help] autocorrect = 10 [remote-hg] hg-git-compat = true [filter "tabs"] ;clean = unexpand --tabs=4 --first-only [gui] tabsize = 2 gcwarning = false [pull] rebase = true [push] followTags = true gpgSign = if-asked autoSetupRemote = true [guitool "meld"] cmd = meld $FILENAME noconsole = yes needsfile = yes [guitool "gvim"] cmd = gvim $FILENAME noconsole = yes needsfile = yes [include] path = ~/.gitconfig.local [filter "lfs"] required = true clean = git-lfs clean -- %f smudge = git-lfs smudge -- %f process = git-lfs filter-process [mergetool "fugitive"] cmd = vim -c \"Gdiff\" \"$MERGED\" [fetch] prune = true writeCommitGraph = true pruneTags = true all = true [column] ui = auto # Allow pushing changes when working with a "read-only" remote from GitHub. [url "git@github.com:"] pushInsteadOf = https://github.com/ pushInsteadOf = git://github.com/