tag - Git: Prevenir confirmaciones en la rama maestra
git tag best practices (1)
Sí, es posible. Debe crear un enganche de pre-confirmación que rechace las confirmaciones a la rama maestra. Git no llama el enlace de pre-confirmación cuando llama al comando de combinación , por lo que este enlace solo rechazará las confirmaciones regulares.
- Ve a tu repositorio.
Cree el archivo .git / hooks / pre-commit con el siguiente contenido:
#!/bin/sh branch="$(git rev-parse --abbrev-ref HEAD)" if [ "$branch" = "master" ]; then echo "You can''t commit directly to master branch" exit 1 fi
Hazlo ejecutable (no requerido en Windows ):
$ chmod +x .git/hooks/pre-commit
Para deshabilitar las fusiones rápidas, también debe agregar la siguiente opción a su archivo .git / config :
[branch "master"]
mergeoptions = --no-ff
Si también desea proteger la rama maestra en su control remoto, marque esta respuesta: Cómo restringir el acceso a la rama maestra en git
(Por simplicidad) Tengo una rama master
y un desarrollador en mi Git-repo. Quiero asegurarme de que la rama master
siempre esté funcionando, por lo que todo el trabajo que hago debería estar en la rama dev
.
Sin embargo, cuando fusiono mis cambios con una combinación --no-ff
, tiendo a quedarme en la rama master
, y simplemente continúo trabajando en ella (porque me olvido de revisar mi rama dev
).
¿Puedo establecer una regla para la rama master
, que indica que no puedo hacer confirmaciones, y las combinaciones de avance rápido, pero solo las --no-ff
de otra rama?
Esto debe funcionar para los repositorios alojados privados (ergo no GitHub y BitBucket).