[feat] vim, vifm, scripts, gitconfig
[dotfiles_afify.git] / .gitconfig
blob545a7d4d358c69738c26fdd2873f59630527fcf1
1 [user]
2         name = Hassan Afify
3         email = hassan@afify.dev
4         signingkey = E7855210AD9062A0
6 [core]
7         editor = vim
9 [color]
10         ui = true
11         diff = auto
12         status = auto
13         branch = auto
14         interactive = auto
16 [merge]
17         tool = vimdiff
19 [mergetool]
20         prompt = false
21         keepBackup = false
23 [diff]
24         tool = vimdiff
25         noprefix = true
26         algorithm = patience
27         renames = copies
29 [difftool]
30         prompt = false
32 [commit]
33         gpgsign = true
34         template = ~/.gitmessage
36 [push]
37         default = current
38         followTags = true
40 [github]
41         user = Afify
43 [log]
44         date = local
45         extendedRegexp = true
47 [gpg]
48         program = gpg2
50 [hub]
51         protocol = https
53 # [url "https://"]
54 #       insteadOf = git://
56 [alias]
57         st = status
58         s = status --short --branch
59         ch = checkout
60         remotes = remote -v # show remotes urls
62 # Merge
63         m = merge
64         chp = cherry-pick -e #hash..#otherhashrange # choose a commit from one branch and apply it onto another
65         show-unmerged-commits = cherry -v master #branch
66         merge-aboard = merge --abort
67 #       show-unmerged-fullcommits = !git log $1 --not master --stat && echo
69 # Push
70         p = push github master
71         pushall = !git remote | xargs -L1 git push --all
72         show-unpushed-branches = log --branches --not --remotes --simplify-by-decoration --decorate --oneline
73 #       show-unpushed-commits =
75 # Diff
76         d = difftool HEAD
77         # df = difftool master..otherbr -- filename
79 # Commit
80         c = commit -S # commit and sign
81         cedit = !git commit --amend && git push --force github master # edit last commit message
82 #       commit_old = commit --date "Wed Feb 16 14:00 2020 +0100" -S
83         # git show commit:filename                           # show_file_old_commit
85 # Tags
86         t = tag -a -s  #tagname                        # create annotated tag
87         tlight = tag -s #tagname  #commit_name         # create lightweight tag
88         tc = !git tag -a -s v$(awk '/^VERSION/{print $NF}' config.mk) # new tag C
89         push-tag = push github #tagname
90         pushall-tags = push github --tags
91         fetch-tag = fetch --tags
92         delete-tag = tag --delete # tagname
93         delete-remote-tag = push --delete github # tagname
94         tv = tag -v # tagname
95         tlist = tag --list #"v2*"
96         tlist-all = tag -l -n
97         tag-tobranch = checkout -b tag_temp_branch #tagname
99 # Log
100         l  = log --all --pretty=format:"%C(#0080ff)%h\\ \\%C(#c0d6de)%s\\%C(#17b062)%d"
101         lgpg  = log --all --pretty=format:"%C(#0080ff)%h\\ %C(#cd9a00)%G?\\ \\%C(#c0d6de)%s\\%C(#17b062)%d"
102         ll  = log --all --graph --pretty=format:"%C(#0080ff)%h\\ \\%C(#c0d6de)%s\\%C(#17b062)%d"
103         lo  = log --all --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)%d\\ \\%C(#c0d6de)%s"
104         ld  = log --all --date=format:'%a %d %b' --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cd)%d\\ \\%C(#c0d6de)%s"
105         lg = log --all --graph --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)%d\\ \\%C(#c0d6de)%s"
106         lf = log -p
107         stat = !git diff --stat $(git merge-base HEAD \"master\")
108         fh = log --follow -p --
110 # Fetch
111         f = fetch -v github                       # verbose mode
112         fs = log github/master ^master            # show fetch updates
113         pullrequest = !hub pr show                # show pull request
114         issue = !hub issue                        # show issues
116 # Branch
117         br = branch -av
118         be = branch --edit-description
119         show-unmerged-branches = branch --no-merged master
120         show-merged-branches = branch --merged master
121         delete-remote-branch = push -d github  #branch name
122         delete-remote-branch = push --delete github #branch name
123         show-ahead = rev-list --count master...
124         # git push -f origin $old_commit_id:master         # change remote branch
125         # git reset --hard origin/<branch_name>            # force sync with remote
126         # git branch -m old-name new-name                  # rename branches
127         # git remote rename origin destination             # rename remote
128         # git remote set-url origin git@github.com:USERNAME/REPOSITORY.git # rename remote url
130 # Remove Undo
131         r = rm -r                                                  # remove file
132         adddeleted = !git ls-files --deleted | xargs git add
133         unstage-all = reset
134         unstage-file = restore --staged
135         uncommit = reset --soft HEAD
136 #       forcerestore = !git reset --hard HEAD $1  && git clean -f
137 #       git reset --hard github/master
139 # Track Ignore files dirs
140         untrack= rm -r --cached --ignore-unmatch
141         retrack = update-index --no-assume-unchanged
142         show-untracked = ls-files . --exclude-standard --others
143         show-ignored = ls-files . --ignored --exclude-standard --others
145 # interactive staging
146         addi = add --interactive
148 # diff
149         create-diff = !sh ~/.scripts/create_diff_git.sh
150         apply-diff = !result=$(ls *.diff | dmenu -p 'select diff file' -l 10) && git apply $result