Based on https://gitlab.com/gitlab-org/gitlab-ce/issues/5986 here is an outline. --- A pack of Git tricks that will leverage your Git-fu. ## Introduction ## Oh-my-zsh Git plugin - https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git - https://github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/git.plugin.zsh ## Git extras Enhance Git with more commands - https://github.com/tj/git-extras ## Aliases ```ini [alias] lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative lol = log --graph --decorate --pretty=oneline --abbrev-commit ``` ## `.gitconfig` on steroids - https://github.com/thoughtbot/dotfiles/blob/master/gitconfig - https://github.com/thoughtbot/dotfiles/pull/377 --- 1. Set a global `.gitignore`: ```ini [core] excludesfile = /home/user/.gitignore ``` 1. Delete local branches that have been removed from remote on fetch/pull: ```ini [fetch] prune = true ``` 1. Gives you extra info when using Git submodules: ```ini [status] submodulesummary = 1 ``` ## Misc 1. Get a list of Git branches, ordered by most recent commit: ``` git for-each-ref --sort=-committerdate refs/heads/ ``` 1. `@` is the same as `HEAD`: ``` git show @~3 ``` 1. `-` refers to the branch you were on before the current one. Use it to checkout the previous branch ([source][dash]): ```sh % git branch master * rs-zenmode-refactor % git checkout master % git checkout - ``` 1. Delete local branches which have already been merged into master ([source][del-merged]): ``` git branch --merged master | grep -v "master" | xargs -n 1 git branch -d ``` 1. Delete all stale tracking branches for a remote: ``` git remote prune origin ``` [del-merged]: http://stevenharman.net/git-clean-delete-already-merged-branches [dash]: https://twitter.com/holman/status/530490167522779137