git reset
and git clean -n
When you have a messy working directory, full of changes that you want to get rid of, you can reset
to return to a known state.
reset
Add a change to our workshop repository, and see the unstaged changes
$ echo 6 >> file
$ git diff file
Great. So to return to HEAD
, we can reset there.
git reset --hard HEAD
Remember about the HEAD
reference? This reset moves our working tree back to that reference, discarding all unstaged changes. This deletes files and directories so use with care.
origin
branchesSkipping forward a little bit here, but you can give any ref
to reset to, and git will do the rest. This is equally powerful and terrifying, as you can lose work and commits this way. Later in the workshop we’ll go through how to recover missing commits if you do screw something up.
git checkout master
git reset origin/master --hard
This will undo all of our local commits to the master
branch and reset HEAD
to point to where ever origin/master
is pointing to.
clean
The clean
utility just removes untracked files, i.e. ones haven’t been added as a commit.
To see what files would be removed (without actually removing anything)
git clean -n
And to remove the files:
git clean -f
To remove files and directories:
git clean -d -n/-f
This is not reversible, so be careful.
SCARY STUFF! Now I’ve shown you how to lose your work, let’s keep going! Next up is merging branches