til/Applications/Essential/git.md

112 lines
1.4 KiB
Markdown

# Git
## Config
Aliases:
```sh
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.cl clone
git config --global alias.co checkout
git config --global alias.df diff
git config --global alias.lg log
git config --global alias.pl pull
git config --global alias.ps push
git config --global alias.st status
git config --global alias.sw switch
```
Use nice editor when commit:
```sh
git config --global core.editor <editor>
```
Always pull rebase:
```sh
git config --global pull.rebase true
```
Always fetch/pull prune:
```sh
git config --global fetch.prune true
```
Set default branch to `main`:
```sh
git config --global init.defaultBranch main
```
## Commands
Prefer rebase when pull:
```sh
git pull --rebase
```
Clean outdated branches:
```sh
git fetch --prune
```
Push force **safely**:
```sh
git push --force-with-lease
```
Rewrite history by changing last `x` commits :
```sh
git rebase -i HEAD~<x>
```
Squash last `x` commits to 1 commit:
```sh
git reset HEAD~<x>
git add -A
git commit
```
Cleanup unnecessary files:
```sh
git gc
```
Find common ancestor:
```sh
git merge-base <A> <B>
```
Log:
```sh
git log --pretty=oneline
git log --graph --pretty=oneline
git log --date=human
```
Changelog:
```sh
git shortlog <commit>..HEAD
```
Clean untracked files and folders:
```sh
git clean -fd
# If afraid
git clean -fdn
```