diff --git a/routers/private/hook_pre_receive.go b/routers/private/hook_pre_receive.go
index f06f6071e9..97568b3f65 100644
--- a/routers/private/hook_pre_receive.go
+++ b/routers/private/hook_pre_receive.go
@@ -397,6 +397,11 @@ func preReceiveBranch(ctx *preReceiveContext, oldCommitID, newCommitID string, r
 			return
 		}
 
+		// If we're an admin for the instance, we can ignore checks
+		if ctx.user.IsAdmin {
+			return
+		}
+
 		// It's not allowed t overwrite protected files. Unless if the user is an
 		// admin and the protected branch rule doesn't apply to admins.
 		if changedProtectedfiles && (!ctx.user.IsAdmin || protectBranch.ApplyToAdmins) {