Say I have an arbitrary local git working directory that was cloned from some remote. I want to make the local git repository be EXACTLY the same as the remote, irrespective of what's happened to the local directory since it was cloned. I do not want to do another full clone.

Say the local working directory has:

* additional untracked files
* deleted files
* staged changes.
* may be on some arbitrary branch.
* have a bunch of commits since being cloned from remote

Now I want to make this local repository reflect remote exactly. Here's my current solution but I'm not sure if it covers all cases and whether there is an easier solution:

```
git stash
git clean -f -x -d
git checkout master
git fetch origin
git reset --hard origin/master
git pull origin master

```

Is there a better way to do this?