Here are some useful but less-common Git features.
This removes untracked files from the working tree. Why would you do this? Let’s say
you run a build process that litters the working tree with temporary files in
dozens of folders, instead of being neat and tidy and putting it in a
This will remove all untracked files, including ignored ones, and remove untracked directories as well:
There are a handful of options, but this is my preferred “make it really clean”
approach. You can use this with
git reset to get back to a pristine working
git pull –rebase
Prefer to pull with rebasing instead of merging. Generally, your local changes were meant to be applied to the tip of the remote repository, so why not get in the habit of keeping your files rebased?
This is essentially the same as this
You can also set a few entries in config so that this happens without needing
--rebase flag. To set this so
master branch always rebases:
or to set it up so new branches always rebase automatically:
There will still be cases where you will want to merge, but generally this would be an explicit step of merging a (feature) branch onto a (production) branch.
See what’s been cherry-picked
If you have a workflow where you are cherry-picking commits from one branch to
another, it’s useful to see what has been cherry-picked. If you want to see what
has and hasn’t been cherry-picked from the current branch to
This shows all commits on the current branch, prefixed with
+ for commits
that have not yet been cherry-picked and with
- for commits that have
already been cherry-picked.