2012-09-07 17 views
5

Tengo un repositorio remoto de git simple.¿Cómo eliminar archivos del repositorio remoto de git bare?

Un nuevo desarrollador lo clonó, pero no tenía un archivo .gitignore configurado correctamente, por lo que, erróneamente, insertó algunos archivos no deseados en el control remoto. Cuando seleccioné los cambios y me fusioné, obtuve estos archivos que no se habían rastreado anteriormente. Otros también han retirado los cambios del control remoto y también tienen estos archivos no deseados.

¿Cómo elimino estos archivos del repositorio remoto y del resto/origen/ramas de todos los demás?

Respuesta

2

Este es un proceso de tres pasos:

  1. eliminar los archivos de su copia del repositorio (ya sea con git rm o por totally purging these files from your history dependiendo de lo importante que era que estos archivos nunca estarán en el repositorio en el primer lugar)
  2. empujar sus cambios al repositorio remoto a través de git push --force.
  3. Dejado todos sepa que pueden volver a tirar del repositorio - esto requerirá un git rebase de su trabajo en el último saber bueno commit.

Como último paso que también puede querer añadir el archivo .gitignore al repositorio de manera que cuando se clona el repositorio de todos los archivos de la derecha son ignorados.

7

Ver GitHub tiene un FAQ en esto: https://help.github.com/articles/remove-sensitive-data Estos son los pasos:

  1. reescribir el árbol del árbol local (de trabajo).

    $ git filter-branch --index-filtro 'git rm --cached --ignore-unmatch Rakefile' \ ---prune vacío gato --tag-nombre-filtro - --all

  2. Force push to remote.

    $ git push origin master --force

  3. Todo el mundo tire del mando a distancia (y usar --force si es necesario)

Para evitar que esto ocurra de nuevo, usted debe comprobar la .gitignore en el repositorio (y la configuración opcionalmente un gancho en el servidor)

Cuestiones relacionadas