diff --git a/app/models/repository.rb b/app/models/repository.rb
index b2b5d52884002409a47bd0dae0cdec8d5ced63bb..5e7bb309967293419d4114d243ea882b5101657f 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -1128,7 +1128,7 @@ class Repository
       raise CommitError.new('Failed to create commit')
     end
 
-    if rugged.lookup(newrev).parent_ids.empty?
+    if rugged.lookup(newrev).parent_ids.empty? || target_branch.nil?
       oldrev = Gitlab::Git::BLANK_SHA
     else
       oldrev = rugged.merge_base(newrev, target_branch.dereferenced_target.sha)
@@ -1219,8 +1219,7 @@ class Repository
 
       [find_branch(branch_name), true]
     else
-      raise CommitError.new(
-        "Cannot find branch #{branch_name} and source_branch is not set")
+      [nil, true] # Empty branch
     end
   end
 end