diff --git a/app/models/repository.rb b/app/models/repository.rb
index e5c92fe1f94575f8a9475912584b69d0d31bb813..ad5f4031a4d1b026d9b283de01d03fc0063d1cc6 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -1239,7 +1239,7 @@ def cache
   def remove_prohibited_branches
     return unless exists?
 
-    prohibited_branches = raw_repository.branch_names.select { |name| name.match(/\A\h{40}\z/) }
+    prohibited_branches = raw_repository.branch_names.select { |name| name.match(Gitlab::Git::COMMIT_ID) }
 
     return if prohibited_branches.blank?
 
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb
index a922fb8430b06e7adefcee76ff0e5cd8ae0436f8..6e64958679eaa186d7fb24b15bdc8508cae74611 100644
--- a/spec/models/repository_spec.rb
+++ b/spec/models/repository_spec.rb
@@ -3789,7 +3789,7 @@ def update_storages(storage_hash)
       allow(repository.raw_repository).to receive(:branch_names).and_return([branch_name])
     end
 
-    context 'when prohibited branch exists' do
+    shared_examples 'deletes the branch' do
       it 'deletes prohibited branch' do
         expect(repository.raw_repository).to receive(:delete_branch).with(branch_name)
 
@@ -3805,6 +3805,16 @@ def update_storages(storage_hash)
       end
     end
 
+    context 'when branch name is hexadecmal and 40-characters long' do
+      include_examples 'deletes the branch'
+    end
+
+    context 'when branch name is hexadecmal and 64-characters long' do
+      let(:branch_name) { '5f50b1461c836081ed677f05e08d10dc7dc68631fa5767bc3e3946349b348275' }
+
+      include_examples 'deletes the branch'
+    end
+
     context 'when branch name is 40-characters long but not hexadecimal' do
       let(:branch_name) { '37fd3601be4c25497a39fa2e6a206e09e759d59s' }