[feat] add mutt config
[dotfiles_afify.git] / .gitconfig
blobc650ee1f3f9701315bba86a57659a4ebf45faef6
1 [user]
2         name = Hassan Afify
3         email = hassanafify@protonmail.com
4 #       signingkey = 0F6CD1196B2A5658
5         signingkey = CED2D2F771262467
7 [core]
8         editor = vim
10 [color]
11         ui = true
12         diff = auto
13         status = auto
14         branch = auto
15         interactive = auto
17 [merge]
18         tool = vimdiff
20 [mergetool]
21         prompt = false
22         keepBackup = false
24 [diff]
25         tool = vimdiff
26         noprefix = true
27         algorithm = patience
28         renames = copies
30 [difftool]
31         prompt = false
33 [commit]
34         gpgsign = true
35         template = ~/.gitmessage
37 [push]
38         default = current
39         followTags = true
41 [github]
42         user = Afify
44 [log]
45         date = local
46         extendedRegexp = true
48 [gpg]
49         program = gpg
51 [hub]
52         protocol = https
54 # [url "https://"]
55 #       insteadOf = git://
57 [alias]
58         s = status
59         st = status --short --branch
60         ch = checkout
61         remotes = remote -v # show remotes urls
63 # Merge
64         m = merge
65         chp = cherry-pick -e #hash..#otherhashrange # choose a commit from one branch and apply it onto another
66         show-unmerged-commits = cherry -v master #branch
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
74 # Diff
75         d = difftool HEAD
76         # df = difftool master..otherbr -- filename
78 # Commit
79         c = commit -S # commit and sign
80         cedit = !git commit --amend && git push --force github master # edit last commit message
81         # git show commit:filename                           # show_file_old_commit
83 # Tags
84         t = tag -a -s  #tagname                        # create annotated tag
85         tlight = tag -s #tagname  #commit_name         # create lightweight tag
86         tc = !git tag -a -s v$(awk '/^VERSION/{print $NF}' config.mk) # new tag C
87         push-tag = push github #tagname
88         pushall-tags = push github --tags
89         fetch-tag = fetch --tags
90         delete-tag = tag --delete # tagname
91         delete-remote-tag = push --delete github # tagname
92         tv = tag -v # tagname
93         tlist = tag --list #"v2*"
94         tlist-all = tag -l -n
95         tag-tobranch = checkout -b tag_temp_branch #tagname
97 # Log
98         l  = log --all --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"
99         ld  = log --all --date=format:'%a %d %b' --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cd)\\ %d\\%C(#c0d6de)%s"
100         lg = log --all --graph --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"
101         lf = log -p
102         stat = !git diff --stat $(git merge-base HEAD \"master\")
103         plog = log --graph --pretty=format:'%h -%d %s %n' --abbrev-commit --date=relative --branches
105 # Fetch
106         f = fetch -v github                       # verbose mode
107         fs = log github/master ^master            # show fetch updates
108         pullrequest = !hub pr show                # show pull request
109         issue = !hub issue                        # show issues
111 # Branch
112         br = branch
113         be = branch --edit-description
114         branches = branch -a                               # list all branches
115         show-unmerged-branches = branch --no-merged master
116         show-merged-branches = branch --merged master
117         delete-remote-branch = push -d github  #branch name
118         delete-remote-branch = push --delete github #branch name
119         # git push -f origin $old_commit_id:master         # change remote branch
120         # git reset --hard origin/<branch_name>            # force sync with remote
121         # git branch -m old-name new-name                  # rename branches
123 # Remove Undo
124         r = rm -r                                                  # remove file
125         adddeleted = !git ls-files --deleted | xargs git add
126         unstage-all = reset
127         unstage-file = restore --staged
128         uncommit = reset --soft HEAD
129         forcerestore = !git reset --hard HEAD $1  && git clean -f
131 # Track Ignore files dirs
132         untrack= rm -r --cached --ignore-unmatch
133         retrack = update-index --no-assume-unchanged
134         show-untracked = ls-files . --exclude-standard --others
135         show-ignored = ls-files . --ignored --exclude-standard --others
137 # interactive staging
138         addi = add --interactive