remote - ¿Hay alguna forma de configurar el repositorio de git para rechazar ''git push--force''?
git push origin master (3)
Configurando las variables de configuración:
receive.denyNonFastForwards
receive.denyDeletes
evitará que cualquier empuje "forzado" funcione en todas las ramas.
Si desea un control más fino antes de la bifurcación, tendrá que usar un ''gancho'' en el repositorio remoto, probablemente el gancho de ''actualización''.
Hay un gancho de actualización de muestra llamado ''update-paranoid'' que probablemente hace lo que necesita (y más) en la distribución de git en la carpeta ''contrib''.
Me preguntaba ¿hay alguna forma de evitar '' git push --force
'' en un repositorio (solo en la rama principal)?
Supongamos que tengo un repositorio remoto de git y hago:
- ''
git push
'' a ''master''. Funciona. - ''
git push --force
'' a ''branch-1''. Funciona. - ''
git push --force
'' a ''master''. Es rechazado
¿Es posible?
Gracias por cualquier respuesta y sugerencia.
BR, Dawid.
Escribí este enlace de actualización rápida para evitar actualizaciones (actualizaciones) no rápidas en la rama "dev" en un repositorio:
#!/bin/sh
REFNAME=$1
OLDSHA=$2
NEWSHA=$3
if [ "refs/heads/dev" != $REFNAME ]; then
exit 0
fi
MERGEBASE=$(git merge-base $OLDSHA $NEWSHA)
if [ $OLDSHA = $MERGEBASE ]; then
exit 0
fi
echo "Not a fast-forward on branch dev"
exit 1
¡Github ya ha introducido el concepto de ramas protegidas!
Se puede encontrar en Settings -> Branches -> Protected Branches
. La función ahora está disponible para todos los usuarios, ¡no solo para empresas!
Esta "protección" se puede habilitar para cualquier sucursal y para cualquier usuario, incluidos los administradores.
Más detalles aquí - https://help.github.com/articles/defining-the-mergeability-of-pull-requests/
Por lo tanto, no se necesitan más enlaces ni código arbitrario.