2012-04-18 11 views
5

Recientemente hicimos una pasantía "git reset --hard" y deshacemos accidentalmente un montón de trabajo en nuestro repositorio principal de GIT. Estamos en el proceso de recuperar el trabajo, pero quiero asegurarme de que nada como esto vuelva a ocurrir.En GIT, ¿cómo puedo evitar que las personas cambien o eliminen confirmaciones que ya se han enviado?

Sé que hay muchas preguntas al respecto, pero todas parecen tratarse de recuperación en lugar de prevención. ¿Hay alguna manera de evitar los cambios a nuestro repositorio principal que alteren o eliminen las confirmaciones que ya se han enviado? ¿Hay alguna configuración o quizás un gancho de empuje que haga el trabajo?

+0

chmod --recursive 700/ruta/a/git/rep y solo permite al administrador hacer tiradas en el repositorio principal. –

+0

Una inserción nunca eliminará las confirmaciones del repositorio remoto. Puede mover las ramas, pero las confirmaciones siguen ahí. –

+0

@WilliamPursell: un 'push -f' puede eliminar commits. –

Respuesta

7

hay 2 configuration options se pueden establecer en tu repositorio central (desnudo) para ayudar a prevenir este problema:

receive.denyNonFastForwards 
receive.denyDeletes 

La primera opción requiere que todos los empuja añadir la historia solamente. Un git reset seguido por un git push sería denegado.

El segundo cierra un agujero de bucle donde alguien podría eliminar una rama remota con git push <origin> :<branch-to-delete> y luego volver a presionar con un git push normal y cualquier cambio que quisieran.

+0

Esto suena exactamente a lo que estoy buscando. Lo probaré. ¡Gracias! – Sean

Cuestiones relacionadas