(Para simplificar) Tengo una masterrama y una deven mi Git-repo. Quiero asegurarme de que la mastersucursal siempre esté funcionando, por lo que todo el trabajo que haga debería estar en la devsucursal.
Sin embargo, cuando fusiono mis cambios con una --no-fffusión, tiendo a permanecer en la masterrama y simplemente sigo trabajando en ella (porque me olvido de verificar mi devrama).
¿Puedo poner una regla para la masterrama, que indique que no puedo hacer confirmaciones y fusiones de avance rápido, pero solo --no-fffusiones desde otra rama?
Esto debe funcionar para repositorios alojados privados (ergo, no GitHub y BitBucket).
git
merge
fast-forward
Rasmus Bækgaard
fuente
fuente

git commitcrea una nueva, no se produce ningún avance rápido. Parece que solo desea prohibir las confirmaciones ordinarias cuando la rama actual esmaster, en cuyo caso, busque en elpre-commitgancho.Respuestas:
Sí, es posible. Debe crear un gancho de confirmación previa que rechace las confirmaciones de la rama maestra. Git no llama al gancho de confirmación previa cuando llama al comando merge , por lo que este gancho rechazará solo las confirmaciones regulares.
Cree el archivo .git / hooks / pre-commit con el siguiente contenido:
Hágalo ejecutable (no es necesario en Windows ):
Para deshabilitar las combinaciones de avance rápido, también debe agregar la siguiente opción a su archivo .git / config :
Si también desea proteger la rama maestra en su control remoto, verifique esta respuesta: Cómo restringir el acceso a la rama maestra en git
fuente
masterrama remota en el gancho de pre-empuje. ej .: gist.github.com/aaronhoffman/ffbfd36928f9336be2436cffe39feaecPuede utilizar la utilidad de confirmación previa para hacer esto. Tiene un
no-commit-to-branchgancho incorporado que se puede usar para evitar compromisos en una o más ramas.Preparar
El proceso de configuración básico es:
.pre-commit-config.yamlarchivo en la raíz de su proyecto (vea a continuación un primer borrador)pre-commit install.Configuración básica para proteger ramas
Aquí hay una configuración básica que incluye solo el
no-commit-to-branchgancho:repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v3.3.0 hooks: - id: no-commit-to-branch args: ['--branch', 'master']Si desea proteger varias ramas, puede usar incluir varios
--branchargumentos en la lista de argumentos:repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v3.3.0 hooks: - id: no-commit-to-branch args: ['--branch', 'master', '--branch', 'staging']¿No es todo esto exagerado?
La confirmación previa tiene muchos otros enlaces incorporados y una gran colección de enlaces creados por la comunidad que transformarán la forma en que limpia y valida sus confirmaciones. La razón por la que menciono esto es porque, si bien esta herramienta puede ser excesiva solo para evitar compromisos en una rama protegida, tiene muchas otras características que la convierten en una adición simple y convincente para cualquier proyecto de git.
fuente
Puede tener sentido instalarlo globalmente a través de
y mover ese
pre-commitarchivo a ese directoriofuente
masteraProduction: ¿se pueden hacer excepciones?