[alias] # Note on completion: contrib/completion/git-completion.bash # understands the "function idiom"… # ALIAS = "!f() { git CMD … ; } && f" # … and will complete 'git ALIAS' like it completes 'git CMD'. # For more complex functions that do not start with a 'git' # command, aliases can request a completion strategy using an # empty ':' statement: # ALIAS = !f() { : git CMD ; … ; } && f # Compare upstream...HEAD with upstream...push. Useful to # answer questions like: # # * Will this rebase drop approvals? # # * What is up with that old worktree? HEAD is more recent # than @{push}, but commits look similar; are they? If they # are, HEAD is a simple rebase of @{push}; if not, HEAD has # unpushed changes which need inspection. cmp-push = "!f () { git diff-id @{u}... ; git diff-id @{u}...@{push} ; } && f" # Get a patch-id for arbitrary diffs. diff-id = "!f() { git diff \"$@\" | git patch-id ; } && f" [init] # Whence branches grow. defaultBranch = trunk [push] # I do not often run unqualified 'git push', but I sometimes # want to review @{push}, meaning "the public state of my # feature branch, as visible on the push-remote, that I am # about to clobber with -f"; e.g. to compare patch-id's. # # With 'push.default = simple' (the default), @{push} is # unusable on feature branches: # > cannot resolve 'simple' push to a single destination # # AFAIU, 'current' DWIM. default = current # Set identity elsewhere, in places that more applications care about: # * user.email: EMAIL environment variable. # * user.name: /etc/passwd.