diff --git a/lib/gitlab/git_access.rb b/lib/gitlab/git_access.rb
index 072491db47d6e1c5989690f225109a437808f671..0f2bec983cd4ec1a3eb1b4bf4e0f8ca56b8ebf57 100644
--- a/lib/gitlab/git_access.rb
+++ b/lib/gitlab/git_access.rb
@@ -211,11 +211,13 @@ def git_hook_check(user, project, ref, oldrev, newrev)
           return build_status_object(true)
         end
 
+        blank_oldrev = Gitlab::Git.blank_ref?(oldrev)
+
         # if oldrev is blank, the branch was just created
-        oldrev = project.default_branch if Gitlab::Git.blank_ref?(oldrev)
+        oldrev = project.default_branch if blank_oldrev
 
         commits(newrev, oldrev, project).each do |commit|
-          next if commit_from_annex_sync?(commit.safe_message) || old_commit?(commit)
+          next if commit_from_annex_sync?(commit.safe_message) || (blank_oldrev && old_commit?(commit))
 
           if status_object = check_commit(commit, git_hook)
             return status_object
diff --git a/spec/lib/gitlab/git_access_spec.rb b/spec/lib/gitlab/git_access_spec.rb
index 7d98ce5ed3e01e34e9cfbd9164300b60bfe71041..0c9599d28a901910bb6329c6432c46afe39d8c0c 100644
--- a/spec/lib/gitlab/git_access_spec.rb
+++ b/spec/lib/gitlab/git_access_spec.rb
@@ -401,7 +401,7 @@ def self.updated_permissions_matrix
         project.git_hook.update(commit_message_regex: "Change some files")
 
         # push to new branch, so use a blank old rev and new ref
-        expect(access.git_hook_check(user, project, 'refs/heads/master', '6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9', '570e7b2abdd848b95f2f578043fc23bd6f6fd24d')).to be_allowed
+        expect(access.git_hook_check(user, project, 'refs/heads/master', Gitlab::Git::BLANK_SHA, '570e7b2abdd848b95f2f578043fc23bd6f6fd24d')).to be_allowed
       end
     end