upstream specific origin force example git github git-push

specific - git push upstream



GitHub: evita que los colaboradores usen push-f (2)

¿Hay alguna manera de evitar el empuje de fuerza en una sucursal o repositorio?

Quiero evitar que las ramas importantes tengan su historia reescrita accidental o intencionalmente. ¿Cómo trata la gente esto en equipos de desarrollo más grandes?

Idealmente, desde mi punto de vista, sería posible bloquear algunas ramas por depósito, y evitar que todos, aparte del propietario del repositorio, hagan un empujón de fuerza hacia ellos.


GitHub anunció la función de "sucursales protegidas":

[...] una nueva función llamada Ramas Protegidas que le da a los administradores del repositorio la capacidad de deshabilitar empujes de fuerza a ramas específicas. [...] vaya a la pestaña Sucursales en la configuración del repositorio y proteja las sucursales.

Fuente: https://github.com/blog/2051-protected-branches-and-required-status-checks


Esto es fácil de hacer con Git con un gancho de pre-receive . Por supuesto, esto requiere que puedas instalar ganchos y, por razones obvias, GitHub no te permite cargar archivos ejecutables arbitrarios para ejecutarlos en sus servidores :-)

En general, el flujo de trabajo con Git o realmente con cualquier sistema de control de versiones distribuidas, es que no permite que otras personas lo envíen a su repositorio. En lugar de eso, los extraes de ellos. Esto requiere un nivel mucho más bajo de confianza. Entonces, esta sería la solución número 1: no los dejes empujar, haz que se bifurquen y luego tira de ellos. De esa forma, puedes controlar lo que entra en tu repositorio.

Otra solución sería configurar su propio repositorio provisional en un servidor de su propiedad, donde puede instalar sus propios ganchos Git. Puede configurar un gancho de pre-receive que niega presionar si no es un gancho de avance rápido y post-receive que reenvía automáticamente todos los impulsos a GitHub. Por supuesto, esto significa que usted pierde muchos de los beneficios de usar GitHub en primer lugar.

Como tercera solución alternativa, puede usar múltiples repositorios. Esta es una combinación de los otros dos enfoques: tener un repositorio al que sus colaboradores puedan acceder y otro al que solo tenga acceso, que saque del primer repositorio.

En cualquier caso, debe presentar una solicitud de función con GitHub (¡especialmente si es un cliente que paga!) Ya que esta parece ser una característica útil.