diff --git a/app/services/files/base_service.rb b/app/services/files/base_service.rb
index bd245100955887034435ac0fe1c0a0584eaec9a9..29013be0f97de9679600467e06f38a3b1c3cb677 100644
--- a/app/services/files/base_service.rb
+++ b/app/services/files/base_service.rb
@@ -13,5 +13,11 @@ module Files
     def repository
       project.repository
     end
+
+    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)
+    end
   end
 end
diff --git a/app/services/files/create_service.rb b/app/services/files/create_service.rb
index 3516cf30dbc8ee501067245df9574a523bc54fbc..bafc3565da1c5463c7cd52a987d784b6d841ba64 100644
--- a/app/services/files/create_service.rb
+++ b/app/services/files/create_service.rb
@@ -40,7 +40,7 @@ module Files
           params[:content]
         end
 
-      created_successfully = repository.commit_file(
+      sha = repository.commit_file(
         current_user,
         file_path,
         content,
@@ -49,7 +49,8 @@ module Files
       )
 
 
-      if created_successfully
+      if sha
+        after_commit(sha)
         success
       else
         error("Your changes could not be committed, because the file has been changed")
diff --git a/app/services/files/update_service.rb b/app/services/files/update_service.rb
index 4d7ac3b7504786b8c5705ad9d5952012c8a757c2..c972f8322bb822133ef131d286087dcfb8462230 100644
--- a/app/services/files/update_service.rb
+++ b/app/services/files/update_service.rb
@@ -26,7 +26,7 @@ module Files
           params[:content]
         end
 
-      repository.commit_file(
+      sha = repository.commit_file(
         current_user,
         path,
         content,
@@ -34,6 +34,7 @@ module Files
         params[:new_branch] || ref
       )
 
+      after_commit(sha)
       success
     rescue Gitlab::Satellite::CheckoutFailed => ex
       error("Your changes could not be committed because ref '#{ref}' could not be checked out", 400)