diff --git a/gems/gitlab-housekeeper/lib/gitlab/housekeeper/git.rb b/gems/gitlab-housekeeper/lib/gitlab/housekeeper/git.rb
index 8970eb9e5b7cb41d51abfe40a05e91b6279313dc..ed2970cb9e82b206d396a2b6807d80b03aa62fa4 100644
--- a/gems/gitlab-housekeeper/lib/gitlab/housekeeper/git.rb
+++ b/gems/gitlab-housekeeper/lib/gitlab/housekeeper/git.rb
@@ -15,21 +15,17 @@ def initialize(logger:, branch_from: 'master')
         @branch_from = branch_from
       end
 
-      def with_clean_state
+      def with_clean_state(&block)
         result = Shell.execute('git', 'stash')
         stashed = !result.include?('No local changes to save')
 
-        with_return_to_current_branch(stashed: stashed) do
-          checkout_branch(@branch_from)
-
-          yield
-        end
+        with_return_to_current_branch(stashed: stashed, &block)
       end
 
       def create_branch(change)
         branch_name = branch_name(change.identifiers)
 
-        Shell.execute("git", "branch", "-f", branch_name)
+        Shell.execute("git", "branch", "-f", branch_name, @branch_from)
 
         branch_name
       end
diff --git a/gems/gitlab-housekeeper/lib/gitlab/housekeeper/runner.rb b/gems/gitlab-housekeeper/lib/gitlab/housekeeper/runner.rb
index 15d881d59fa7148f7cc9be7eadbc45217834c838..5c9c91f174864253d998d78729a8c37921b53f9c 100644
--- a/gems/gitlab-housekeeper/lib/gitlab/housekeeper/runner.rb
+++ b/gems/gitlab-housekeeper/lib/gitlab/housekeeper/runner.rb
@@ -68,9 +68,9 @@ def run
 
               # If no merge request exists yet, create an empty one to allow keeps to use the web URL.
               unless @dry_run
-                merge_reqeust = get_existing_merge_request(branch_name) || create(change, branch_name)
+                merge_request = get_existing_merge_request(branch_name) || create(change, branch_name)
 
-                change.mr_web_url = merge_reqeust['web_url']
+                change.mr_web_url = merge_request['web_url']
               end
 
               git.in_branch(branch_name) do