I know that there is a lot of posts like "My top bash commands", "My favorite git commands".
But this morning I said to myself: "Come one! You know nice tricks too! Share them!".
So this aliases I'm using a lot of time because I prefer to work with git by CLI. I will not repeat common and simple aliases like commit -m
.
1. git h
Git history. A picture is worth a thousand words
Alias for this command:
h = log --pretty='format:%Cred%h%Creset %C(yellow)%d%Creset - %s %C(green)%ar%Creset %C(blue)%an%Creset' --graph --all --decorate
```
You can write your own format, all variables described at [documentation](https://git-scm.com/docs/git-log#_pretty_formats)
## 2. `git cs ${COMMIT_HASH}`
Find branches that contains specific commit

Alias for this command:
cs = "!f() { git branch -r --contains $1; }; f"
## 3. `git bd ${BRANCH_1}..${BRANCH_2}`
Difference between branches. Output same as for `git h`, but shows only commits between this branches pointers.
Alias for this command:
bd = "!f() { git log --graph --pretty=format:\"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset\" --abbrev-commit --date=relative $1; }; f"
## 4. `git cleanup`
Removes all branches that already merged.
Alias for this command:
cleanup = "!git branch --no-color --merged | /usr/bin/grep --color=none -v '\*\|master\|develop' | xargs -n 1 git branch -d"
As you can see I've hardcoded branches `master` and `develop`, but you can have different names for branches.
## How to add this aliases
You can add those commands at git config(for global aliases `~/.gitconfig` or `.git/config` for project specific)
[alias]
h = log --pretty='format:%Cred%h%Creset %C(yellow)%d%Creset - %s %C(green)%ar%Creset %C(blue)%an%Creset' --graph --all --decorate
cs = "!f() { git branch -r --contains $1; }; f"
bd = "!f() { git log --graph --pretty=format:\"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset\" --abbrev-commit --date=relative $1; }; f"
cleanup = "!git branch --no-color --merged | /usr/bin/grep --color=none -v '\*\|master\|develop' | xargs -n 1 git branch -d"
Maybe you are using something interesting too?
Top comments (0)