2009-12-07 14 views
7

Hace 2 semanas, configuré mi aplicación que tenía mi contraseña, no es muy útil. ¿Cómo puedo eliminar el archivo del historial de confirmaciones y asegurarme de que no se vuelva a comprometer?Git - eliminar y excluir el archivo de configuración

Quiero eliminar el archivo de todos los árboles de confirmaciones porque contiene mis contraseñas.

+0

¿Qué es exactamente estás tratando de hacer? ¿Desea revertir una única confirmación que sucedió hace 2 semanas? – BastiBen

Respuesta

18

Puede

git rm myConfigFile 
echo myConfigFile > .gitignore 
git add .gitignore 
git commit -m "from now on, no more myConfigFile" 

El otro enfoque extremo (peligroso, especialmente si ya ha empujado a tu repositorio a uno remoto) sería eliminar por completo el archivo de la historia de dicha cesión temporal :

git filter-branch --index-filter 'git update-index --remove myConfigFile' HEAD 

(utilizar con cuidado, y con una primera copia de seguridad)

La pregunta How do I remove sensitive files from git’s history tiene más información sobre ese tema delicado.

Los problemas con este proceso son de dos tipos:

  1. Si tu repositorio ya se pueden clonar, nunca se puede garantizar la confidencialidad de la información va a ser muy "ido" de todos los otros repositorios.
  2. Cuando otros intentan desplegar sus últimos cambios después de esto, recibirán un mensaje que indica que los cambios no se pueden aplicar porque no es un avance rápido.
    Para solucionar esto, deberán eliminar su repositorio existente y volver a clonarlo, o seguir las instrucciones en "RECOVERING FROM UPSTREAM REBASE" en el git-rebase manpage.
    En ambos casos, su información confidencial no será "silencio" a sustituir o borrado ...
+0

. Oro, gracias! . – IvRRimUm

0

Añadir el nombre del archivo a un archivo .gitignore.

Link

1
cp my-config config.tmp 
git rm my-config 
git commit -m 'removed config' 
mv config.tmp my-config 
echo my-config >> .gitignore 
git add .gitignore 
git commit -m 'ignore config' 
Cuestiones relacionadas