Clear Git History
- Checkout
git checkout --orphan latest_branch - Add all the files
git add -A - Commit the changes
git commit -am "commit message" - Delete the branch
git branch -D main - Rename the current branch to main
git branch -m main - Finally, force update your repository
git push -f origin main
rebase
- git - How do I squash my last N commits together? - Stack Overflow
commit message was set after operation.
Merge VS Rebase
- Merge the incoming changes into the current branch: select this option to perform merge during the update. This is equivalent to running
git fetchand thengit merge, orgit pull --no-rebase. - Rebase the current branch on top of the incoming changes: select this option to perform rebase during the update. This is equivalent to running
git fetchand thengit rebase, orgit pull --rebase(all local commits will be put on top of the updated upstream head).
Pretty Print
git ls-tree --full-tree --name-only -r HEAD
git log --all --decorate --oneline --graph
Sparse Checkout
Used in mono repo.
Reduce your working tree to a subset of tracked files
git clone \
--depth 1 \
--filter=blob:none \
--sparse \
https://github.com/cirosantilli/test-git-partial-clone
git sparse-checkout set --cone
git sparse-checkout set path/to/dir
Global .gitignore
git config --global core.excludesfile ~/.gitignore