diff --git a/app/services/files/base_service.rb b/app/services/files/base_service.rb
index 29013be0f97de9679600467e06f38a3b1c3cb677..4d02752454eda8eed4fb32ca8183f105581de5bb 100644
--- a/app/services/files/base_service.rb
+++ b/app/services/files/base_service.rb
@@ -17,7 +17,8 @@ module Files
     def after_commit(sha)
       commit = repository.commit(sha)
       full_ref = 'refs/heads/' + (params[:new_branch] || ref)
-      GitPushService.new.execute(project, current_user, commit.parent_id, sha, full_ref)
+      old_sha = commit.parent_id || Gitlab::Git::BLANK_SHA
+      GitPushService.new.execute(project, current_user, old_sha, sha, full_ref)
     end
   end
 end
diff --git a/app/services/files/create_service.rb b/app/services/files/create_service.rb
index bafc3565da1c5463c7cd52a987d784b6d841ba64..0a80455bc6bc4094d61ad220ffac295ac9d553e3 100644
--- a/app/services/files/create_service.rb
+++ b/app/services/files/create_service.rb
@@ -1,7 +1,7 @@
 require_relative "base_service"
 
 module Files
-  class CreateService < BaseService
+  class CreateService < Files::BaseService
     def execute
       allowed = Gitlab::GitAccess.new(current_user, project).can_push_to_branch?(ref)
 
diff --git a/app/services/files/delete_service.rb b/app/services/files/delete_service.rb
index fabcdc19648e4086347d1cdd09436059a7925fc1..2281777604c84daf6d2243e008aeb5b606fe9a92 100644
--- a/app/services/files/delete_service.rb
+++ b/app/services/files/delete_service.rb
@@ -1,7 +1,7 @@
 require_relative "base_service"
 
 module Files
-  class DeleteService < BaseService
+  class DeleteService < Files::BaseService
     def execute
       allowed = ::Gitlab::GitAccess.new(current_user, project).can_push_to_branch?(ref)
 
diff --git a/app/services/files/update_service.rb b/app/services/files/update_service.rb
index c972f8322bb822133ef131d286087dcfb8462230..013cc1ee322209414f43f1d430eca16f0d6050a6 100644
--- a/app/services/files/update_service.rb
+++ b/app/services/files/update_service.rb
@@ -1,7 +1,7 @@
 require_relative "base_service"
 
 module Files
-  class UpdateService < BaseService
+  class UpdateService < Files::BaseService
     def execute
       allowed = ::Gitlab::GitAccess.new(current_user, project).can_push_to_branch?(ref)
 
diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb
index bdf36af02fdba0adee2e16f2e178ff2079bdef00..cde65349d5c2d016f1221c45ffa40e21eebec55a 100644
--- a/app/services/git_push_service.rb
+++ b/app/services/git_push_service.rb
@@ -127,7 +127,8 @@ class GitPushService
   end
 
   def is_default_branch?(ref)
-    Gitlab::Git.branch_ref?(ref) && Gitlab::Git.ref_name(ref) == project.default_branch
+    Gitlab::Git.branch_ref?(ref) &&
+      (Gitlab::Git.ref_name(ref) == project.default_branch || project.default_branch.nil?)
   end
 
   def commit_user(commit)