156 lines
5.9 KiB
Plaintext
156 lines
5.9 KiB
Plaintext
[core]
|
|
# Use vim as commit-message editor
|
|
editor = vim
|
|
|
|
# Don't wrap lines on paged views such as diff or log
|
|
page = less -S
|
|
|
|
# Just use delta as diff-viewer by default, note install: apt install git-delta
|
|
pager = delta
|
|
[diff]
|
|
# Use histogram in favor of readability over size for diffs
|
|
algorithm = histogram
|
|
|
|
# indicate moved lines by using alternative colors for added and removed lines
|
|
colorMoved = zebra
|
|
[pull]
|
|
# prefer to rebase local branches on remote changes instead of merging
|
|
rebase = true
|
|
[mergetool]
|
|
# I don't need the backups of a merge
|
|
keepBackup = false
|
|
[rebase]
|
|
# stash changes before merging remote changes this is very handy in conjunction with "pull.rebase=true"
|
|
autoStash = true
|
|
[merge]
|
|
# stash changes before merging remote changes this is very handy in conjunction with "pull.rebase=true"
|
|
autoStash = true
|
|
|
|
# provide more information about the situation before the changes in case of conflicts
|
|
conflictstyle = zdiff3
|
|
|
|
# Just a good diff-tool, mostly
|
|
tool = vimdiff
|
|
|
|
# List all the applied commits in the message of the merge-commit
|
|
summary = true
|
|
[delta]
|
|
# use n and N to move between diff sections
|
|
navigate = true
|
|
|
|
# show line numbers in delta diff view
|
|
line-numbers = true
|
|
[interactive]
|
|
diffFilter = delta --color-only
|
|
[init]
|
|
defaultBranch = main
|
|
[alias]
|
|
# Show all configured alias
|
|
alias = config --get-regexp ^alias\\.
|
|
|
|
# Manipulate the last commit
|
|
amend = commit --amend
|
|
|
|
# Just add any additional change to the last commit and push it
|
|
# !!! Never use this in a shared project !!!
|
|
ash = "!git add .; git cane; git fush"
|
|
|
|
# Show all authors and their commit count in descending order
|
|
authors = "!git log --format='%aN <%aE>' | awk '{arr[$0]++} END{for (i in arr){printf \"%6s %s\\n\", arr[i], i;}}' | sort -rn"
|
|
|
|
# Checkout a new branch from the current HEAD and use it instantly, e.g. git bc my-new-local-branch
|
|
bc = checkout -b
|
|
|
|
# Reset ALL changed files, even new and deleted, similiar but much faster to `rm -rf * && git reset --hard HEAD`
|
|
bust = "!git restore --staged .; git co -- .; git clean -fd"
|
|
|
|
# Shortcut to change last commit without changing the commit-message
|
|
cane = commit --amend --no-edit
|
|
|
|
# Same like bc and just a help to prevent typos
|
|
cb = checkout -b
|
|
|
|
# Just a convenience alias for the first commit of a new project
|
|
cf = commit --allow-empty -m 'Initial commit'
|
|
|
|
# Shortcut for checkout, we are all lazy
|
|
co = checkout
|
|
|
|
# A utility to push right after a commit (I use that for my vimwiki with the key ,ws)
|
|
commit-and-push = "!git commit && git push"
|
|
cap = "!git commit && git push"
|
|
|
|
# Show the changes which will be committed
|
|
dc = diff --cached
|
|
|
|
# Fetch all remote-changes, but don't merge local branches!
|
|
fa = fetch --all
|
|
|
|
# Mark a change as a fixup to a given commit, e.g. `git fix HEAD~2`, see git commit --help
|
|
fix = commit -n --fixup
|
|
|
|
# Mark a change as fixup and try to squash it immediately into the original commit
|
|
fixit = "!bash -c 'TARGET_HASH=`git rev-parse "'"'"$1"'"'"`; git fix $TARGET_HASH && git ria $TARGET_HASH^' -e"
|
|
|
|
# Fetch all remote-changes from origin, but don't merge local branches!
|
|
fo = fetch origin
|
|
|
|
# Perform a push with force but only if there are no remote changes which we don't know already!
|
|
fush = push --force-with-lease
|
|
|
|
# Use vimdiff to view current changes
|
|
gt = difftool --tool=vimdiff -y
|
|
|
|
# Just show a verbose log of the last 6 commits
|
|
last = log -6 --color --reverse --format='%C(red)commit: %H%n%C(green)Author: %aN <%aE>%nAuthorDate: %ad%Creset%n%n%C(bold blue)%w(100,4,4)%s%Creset%n%n%b' HEAD
|
|
|
|
# Show a graph of all changes within the repository
|
|
lg = log --graph --all --date-order --format='%C(yellow)%h %C(bold red)%d %Creset%s %Cgreen(%ar) %C(bold blue)%aN <%aE>'
|
|
|
|
# Like 'lg' but with a ISO 8601-like timestamp
|
|
lgi = log --graph --all --date-order --format='%C(yellow)%h %C(bold red)%d %Creset%s %Cgreen(%ai) %C(bold blue)%aN <%aE>'
|
|
|
|
# Show a graph of only the current branch down to the development branch
|
|
lgb = log --graph --date-order --format='%C(yellow)%h %Creset%s %Cgreen(%ar) %C(bold blue)%aN <%aE>%C(bold red)%d'
|
|
|
|
# Like 'lgb' but with a ISO 8601-like timestamp
|
|
lgbi = log --graph --date-order --format='%C(yellow)%h %Creset%s %Cgreen(%ai) %C(bold blue)%aN <%aE>%C(bold red)%d'
|
|
|
|
# Like 'lgb' but with the committer timestamp
|
|
lgbc = log --graph --date-order --format='%C(yellow)%h %Creset%s %Cgreen(%ci) %C(bold blue)%aN <%aE>%C(bold red)%d'
|
|
|
|
# Show a graph of all commits and their Tickets
|
|
lgbt = log --graph --date-order --format='%C(yellow)%h%C(red)%d%Creset %s%n%C(bold blue)%aN <%aE> %Creset%Cgreen%ar %C(red)%(trailers:key=Ticket,separator=%x2C )%n'
|
|
|
|
# Like 'lgi' but with the committer timestamp
|
|
lgc = log --graph --all --date-order --format='%C(yellow)%h %C(bold red)%d %Creset%s %Cgreen(%ci) %C(bold blue)%aN <%aE>'
|
|
|
|
# Show a graph of all commits and their Tickets
|
|
lgt = log --graph --all --date-order --format='%C(yellow)%h%C(red)%d%Creset %s%n%C(bold blue)%aN <%aE> %Creset%Cgreen%ar %C(red)%(trailers:key=Ticket,separator=%x2C )%n'
|
|
|
|
# Open interactive rebase-console to given commit, e.g. `git ri HEAD~3`
|
|
ri = rebase -i
|
|
|
|
# Apply fixup and squach commits, see git commit --help
|
|
ria = rebase -i --autosquash
|
|
|
|
# Just save all as it is and add a stupid commit message to it
|
|
save = "!git add .; git commit -nm save"
|
|
|
|
# Mark a change as a squach to a given commit similiar to `fix`
|
|
squ = commit --squash
|
|
|
|
# We are lazy and don't want to type status all the time
|
|
st = status
|
|
|
|
# Show the summary of the last commit
|
|
sum = "!__sum() { git log --color -1 --format=\"%C(red)commit %H%n%C(green)Author: %aN <%aE>%nAuthorDate: %ad%n%C(yellow)Commit: %cN <%cE>%nCommitDate: %cd%Creset%n%n%C(bold blue)%s%Creset%n%n%b\" $1 | git interpret-trailers; }; __sum"
|
|
|
|
# Dispose all old branches which are already deleted remote, except of main, master and develop!
|
|
trash = "!git branch --merged | egrep -v \"(^\\*|main|master|develop)\" | xargs git branch -d; git remote prune origin"
|
|
|
|
# Unstage added files
|
|
unstage = reset HEAD
|
|
[include]
|
|
path = local.config
|