Un merge malo puede significar: mergeaste el branch equivocado, resolviste conflictos incorrectamente, el merge introdujo una regresión, o mergeaste antes de completarse la review.
Cualquier cosa commiteada a Git es permanente hasta que reescribas activamente la historia. Cualquier cosa pusheada a un remote debe considerarse expuesta.
Un push roto desperdicia el tiempo de todos. Un hook pre-push ejecutando la suite de tests detecta el problema antes de que el push salga de tu máquina.
Quieres mover un directorio de un repo a otro, manteniendo la historia completa de commits de los archivos movidos. Copy-paste pierde la procedencia; git filter-repo la preserva.