Last active
February 22, 2026 14:38
-
Star
(1,396)
You must be signed in to star a gist -
Fork
(476)
You must be signed in to fork a gist
-
-
Save pksunkara/988716 to your computer and use it in GitHub Desktop.
Sample of git config file (Example .gitconfig) (Place them in $XDG_CONFIG_HOME/git)
This file contains hidden or 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
| # vi: ft=dosini | |
| [user] | |
| name = Pavan Kumar Sunkara | |
| email = pavan.sss1991@gmail.com | |
| username = pksunkara | |
| [core] | |
| editor = nvim | |
| whitespace = fix,-indent-with-non-tab,trailing-space,cr-at-eol | |
| pager = delta | |
| [column] | |
| ui = auto | |
| [branch] | |
| sort = -committerdate | |
| [tag] | |
| sort = version:refname | |
| [init] | |
| defaultBranch = master | |
| [checkout] | |
| defaultRemote = origin | |
| [rerere] | |
| enabled = 1 | |
| autoupdate = 1 | |
| [diff] | |
| algorithm = histogram | |
| colorMoved = plain | |
| renames = true | |
| tool = nvimdiff | |
| [difftool] | |
| prompt = false | |
| [push] | |
| autoSetupRemote = true | |
| followTags = true | |
| [fetch] | |
| prune = true | |
| pruneTags = true | |
| all = true | |
| [rebase] | |
| autoSquash = true | |
| updateRefs = true | |
| [color] | |
| ui = auto | |
| [color "branch"] | |
| current = yellow bold | |
| local = green bold | |
| remote = cyan bold | |
| [color "diff"] | |
| meta = yellow bold | |
| frag = magenta bold | |
| old = red bold | |
| new = green bold | |
| whitespace = red reverse | |
| [color "status"] | |
| added = green bold | |
| changed = yellow bold | |
| untracked = red bold | |
| [sendemail] | |
| smtpencryption = tls | |
| smtpserver = smtp.gmail.com | |
| smtpuser = pavan.sss1991@gmail.com | |
| smtppass = password | |
| smtpserverport = 587 | |
| [web] | |
| browser = google-chrome | |
| [instaweb] | |
| httpd = apache2 -f | |
| [delta] | |
| features = line-numbers decorations | |
| line-numbers = true | |
| [delta "decorations"] | |
| minus-style = red bold normal | |
| plus-style = green bold normal | |
| minus-emph-style = white bold red | |
| minus-non-emph-style = red bold normal | |
| plus-emph-style = white bold green | |
| plus-non-emph-style = green bold normal | |
| file-style = yellow bold none | |
| file-decoration-style = yellow box | |
| hunk-header-style = magenta bold | |
| hunk-header-decoration-style = magenta box | |
| minus-empty-line-marker-style = normal normal | |
| plus-empty-line-marker-style = normal normal | |
| line-numbers-right-format = "{np:^4}│ " | |
| [trim] | |
| bases = master,main | |
| protected = *production | |
| [sequence] | |
| editor = interactive-rebase-tool | |
| [filter "lfs"] | |
| clean = git-lfs clean -- %f | |
| smudge = git-lfs smudge -- %f | |
| process = git-lfs filter-process | |
| required = true | |
| [alias] | |
| a = add --all | |
| ai = add -i | |
| ############# | |
| ap = apply | |
| as = apply --stat | |
| ac = apply --check | |
| ############# | |
| ama = am --abort | |
| amr = am --resolved | |
| ams = am --skip | |
| ############# | |
| b = branch | |
| ba = branch -a | |
| bd = branch -d | |
| bdd = branch -D | |
| br = branch -r | |
| bc = rev-parse --abbrev-ref HEAD | |
| bu = !git rev-parse --abbrev-ref --symbolic-full-name "@{u}" | |
| bs = !git-branch-status | |
| bt = !git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@' | |
| ############# | |
| bl = blame -w | |
| bll = blame -w -L | |
| blm = blame -w -C -C -C | |
| blml = blame -w -C -C -C -L | |
| ############# | |
| c = commit | |
| ca = commit -a | |
| cm = commit -m | |
| cam = commit -am | |
| cem = commit --allow-empty -m | |
| cd = commit --amend | |
| cad = commit -a --amend | |
| ced = commit --allow-empty --amend | |
| ############# | |
| cl = clone | |
| cld = clone --depth 1 | |
| clg = !sh -c 'git clone https://github.com/$1' - | |
| clgp = !sh -c 'git clone git@github.com:$1' - | |
| clsp = !sh -c 'git clone git@git.sr.ht:~$1' - | |
| clgu = !sh -c 'git clone git@github.com:$(git config --get user.username)/$1' - | |
| clsu = !sh -c 'git clone git@git.sr.ht:~$(git config --get user.username)/$1' - | |
| ############# | |
| cp = cherry-pick | |
| cpa = cherry-pick --abort | |
| cpc = cherry-pick --continue | |
| ############# | |
| d = diff | |
| dc = diff --cached | |
| dk = diff --check | |
| dkc = diff --cached --check | |
| dt = difftool | |
| dtc = difftool --cached | |
| dw = diff --word-diff | |
| ############# | |
| f = fetch | |
| fo = fetch origin | |
| fu = fetch upstream | |
| ############# | |
| fp = format-patch | |
| ############# | |
| fk = fsck | |
| ############# | |
| g = grep -p | |
| ############# | |
| l = log --oneline | |
| lg = log --oneline --graph --decorate | |
| ll = log -L | |
| lf = log -S | |
| ############# | |
| ls = ls-files | |
| lsf = !git ls-files | grep -i | |
| ############# | |
| m = merge | |
| ma = merge --abort | |
| mc = merge --continue | |
| ms = merge --skip | |
| ############# | |
| o = checkout | |
| om = !git checkout $(git bt) | |
| ob = checkout -b | |
| ############# | |
| pr = prune -v | |
| ############# | |
| ps = push | |
| psf = push --force-with-lease | |
| psu = push -u | |
| pst = push --tags | |
| ############# | |
| pso = push origin | |
| psao = push --all origin | |
| psfo = push --force-with-lease origin | |
| psuo = push -u origin | |
| ############# | |
| psom = !git push origin $(git bt) | |
| psaom = !git push --all origin $(git bt) | |
| psfom = !git push --force-with-lease origin $(git bt) | |
| psuom = !git push -u origin $(git bt) | |
| psoc = !git push origin $(git bc) | |
| psaoc = !git push --all origin $(git bc) | |
| psfoc = !git push --force-with-lease origin $(git bc) | |
| psuoc = !git push -u origin $(git bc) | |
| psdc = !git push origin :$(git bc) | |
| ############# | |
| pl = pull | |
| pb = pull --rebase | |
| ############# | |
| plo = pull origin | |
| pbo = pull --rebase origin | |
| plom = !git pull origin $(git bt) | |
| ploc = !git pull origin $(git bc) | |
| pbom = !git pull --rebase origin $(git bt) | |
| pboc = !git pull --rebase origin $(git bc) | |
| ############# | |
| plu = pull upstream | |
| plum = !git pull upstream $(git bt) | |
| pluc = !git pull upstream $(git bc) | |
| pbum = !git pull --rebase upstream $(git bt) | |
| pbuc = !git pull --rebase upstream $(git bc) | |
| ############# | |
| rb = rebase | |
| rba = rebase --abort | |
| rbc = rebase --continue | |
| rbi = rebase --interactive | |
| rbs = rebase --skip | |
| ############# | |
| re = reset | |
| rh = reset HEAD | |
| reh = reset --hard | |
| rem = reset --mixed | |
| res = reset --soft | |
| rehh = reset --hard HEAD | |
| remh = reset --mixed HEAD | |
| resh = reset --soft HEAD | |
| rehom = !git reset --hard origin/$(git bt) | |
| ############# | |
| r = remote | |
| ra = remote add | |
| rr = remote rm | |
| rv = remote -v | |
| rn = remote rename | |
| rp = remote prune | |
| rs = remote show | |
| rao = remote add origin | |
| rau = remote add upstream | |
| rro = remote remove origin | |
| rru = remote remove upstream | |
| rso = remote show origin | |
| rsu = remote show upstream | |
| rpo = remote prune origin | |
| rpu = remote prune upstream | |
| ############# | |
| rmf = rm -f | |
| rmrf = rm -r -f | |
| ############# | |
| s = status | |
| sb = status -s -b | |
| ############# | |
| sa = stash apply | |
| sc = stash clear | |
| sd = stash drop | |
| sl = stash list | |
| sp = stash pop | |
| ss = stash save | |
| ssk = stash save -k | |
| sw = stash show | |
| st = !git stash list | wc -l 2>/dev/null | grep -oEi '[0-9][0-9]*' | |
| snap = !git stash save 'snapshot: $(date)' && git stash apply 'stash@{0}' | |
| ############# | |
| t = tag | |
| td = tag -d | |
| ############# | |
| w = show | |
| ############# | |
| wa = worktree add | |
| wl = worktree list | |
| wp = worktree prune | |
| wr = worktree remove | |
| wx = worktree repair | |
| ############# | |
| subadd = !sh -c 'git submodule add https://github.com/$1 $2/$(basename $1)' - | |
| subrm = !sh -c 'git submodule deinit -f -- $1 && rm -rf .git/modules/$1 && git rm -f $1' - | |
| subup = submodule update --init --recursive | |
| subpull = !git submodule foreach 'git pull --tags -f origin $(git bt)' | |
| subsync = submodule sync --recursive | |
| ############# | |
| assume = update-index --assume-unchanged | |
| unassume = update-index --no-assume-unchanged | |
| assumed = !git ls -v | grep ^h | cut -c 3- | |
| unassumeall = !git assumed | xargs git unassume | |
| assumeall = !git status -s | awk {'print $2'} | xargs git assume | |
| ############# | |
| bump = !sh -c 'git commit -am \"Version bump v$1\" && git psuoc && git release $1' - | |
| release = !sh -c 'git tag v$1 && git pst' - | |
| unrelease = !sh -c 'git tag -d v$1 && git pso :v$1' - | |
| ############# | |
| behind = !git rev-list --left-only --count $(git bu)...HEAD | |
| ahead = !git rev-list --right-only --count $(git bu)...HEAD | |
| ############# | |
| merged = !sh -c 'git om && git plom && git trim' | |
| ignore = !sh -c 'echo "$1" >> .git/info/exclude' - | |
| aliases = !git config -l | grep alias | cut -c 7- | |
| bare = !sh -c 'git symbolic-ref HEAD refs/heads/$1 && git rm --cached -r . && git clean -xfd' - | |
| whois = !sh -c 'git log -i -1 --author=\"$1\" --pretty=\"format:%an <%ae>\"' - | |
| serve = daemon --reuseaddr --verbose --base-path=. --export-all ./.git | |
| ours = "!f() { git checkout --ours $@ && git add $@; }; f" | |
| theirs = "!f() { git checkout --theirs $@ && git add $@; }; f" | |
| subrepo = !sh -c 'git filter-branch --prune-empty --subdirectory-filter $1 $(git bt)' - | |
| human = name-rev --name-only --refs=refs/heads/* |
This file contains hidden or 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
| # Compiled source # | |
| ################### | |
| *.com | |
| *.class | |
| *.dll | |
| *.exe | |
| *.o | |
| *.so | |
| # Temporary files # | |
| ################### | |
| *.swp | |
| *.swo | |
| *~ | |
| # Packages # | |
| ############ | |
| *.7z | |
| *.dmg | |
| *.gz | |
| *.iso | |
| *.jar | |
| *.rar | |
| *.tar | |
| *.zip | |
| # Logs # | |
| ###################### | |
| *.log | |
| # OS generated files # | |
| ###################### | |
| .DS_Store* | |
| ehthumbs.db | |
| Icon? | |
| Thumbs.db | |
| # Editor files # | |
| ################ | |
| .vscode | |
| .zed |
A very useful .gitconfig example! The alias section, in particular, has greatly improved my Git workflow. Thanks! Also, I’ve shared some useful Git tips on my website: https://codingcops.com/github-vs-gitlab/
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This can be a good start: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration