When developing software using
git as version control system, sometimes there is the wish to completely reset your workspace, so that your snapshot is exactly as the snapshot in the repository. There shall no deleted, missing or additional files or folders that are not tracked. Furthermore
git does not track folders. There shouldn’t any dead folders that
git doesn’t care for. Let’s have a look how to do that.
In order to completely wipe your workspace and to get to the snapshot of a defined commit it is necessary to do the following steps:
git per default handles all the files that are tracked. So
git doesn’t care about untracked files.
git reset --hard
git to completely rollback all changes to tracked files and also resets the index.
git offers different options for the command
A small overview of the most common
git reset parameters. Per default
--mixed is applied. Only one of them can be used at a time.
--soft resets the HEAD
--mixed resets the index additionally to
--hard resets the working folder additionally to
After that the head, the index and all tracked working files are in its original state.
Cleaning up workspace
The second step is to clean up the workspace. This means purging all the files and folders that are not tracked. For that there is a command called
git clean -df
-d also removes directories additionally to files.
git to clean in case the config property
clean.requireForce is not set to false.
Adding alias for
For convenience an
alias might be a good idea. Simply have a look into the
git-config documentation. With the syntax
alias.* an alias can be defined. In order to put it into the global
git configuration simply apply the following command:
git config --global alias.rc "! git reset --hard && git clean -df"
In this case an alias
rc is defined. So you can call
git rc in order to reset and then clean the workspace in one step.