diff --git a/mothermayi/git.py b/mothermayi/git.py
index <HASH>..<HASH> 100644
--- a/mothermayi/git.py
+++ b/mothermayi/git.py
@@ -16,6 +16,8 @@ def execute(command):
 @contextlib.contextmanager
 def stash():
     execute(['git', 'stash', '-u', '--keep-index'])
-    yield
-    execute(['git', 'reset', '--hard'])
-    execute(['git', 'stash', 'pop', '--quiet', '--index'])
+    try:
+       yield
+    finally:
+        execute(['git', 'reset', '--hard'])
+        execute(['git', 'stash', 'pop', '--quiet', '--index'])
Put un-stash in finally block

Without it a failure will lead to us not putting the user back in the
state they expect to be in