2011-12-06 15 views
7

Mi problema: parece que cygwin git no solicita credenciales correctamente cuando usa URL https: //, así que utilicé el nombre de usuario y la contraseña en la URL. Lamentablemente, cuando hice un "get pull" auto-cometió un mensaje con la URL completa, incluida la contraseña. No me di cuenta de esto hasta después de haber empujado los cambios.¿Cómo edito las confirmaciones pasadas de git para eliminar mi contraseña de los registros de confirmación?

¿Cómo edito los mensajes de confirmación antiguos para eliminar la contraseña en la URL?

Mi git repo compartido está en mi propio servidor. Puedo hacer cirugía en el repositorio si es necesario.

Las instrucciones sobre cómo cambiar mi configuración (es decir, no uso Cygwin, no use https) son innecesarias. Estoy tratando de hacer frente a lo que ya está hecho.

Sí, puedo y voy a grabar la contraseña pero aún así me gustaría solucionarlo.

+0

[Ver aquí] (http://www-cs-students.stanford.edu/~blynn/gitmagic/ch05.html). – alex

Respuesta

1

El enlace para eliminar datos confidenciales en git-hub es útil. Sin embargo, encontré una herramienta que era muy de uso directo: Eric Raymond reposurgeon.

Esta herramienta me permitió importar fácilmente mi repositorio, enumerar los commits con el problema, editarlos (lo hice individualmente) y escribir un git de importación rápida de mi repositorio. Importé esa secuencia en un nuevo repositorio y lo sincronicé en su lugar.

El inconveniente es que mi antiguo repositorio está completamente muerto: he cambiado la historia. Eso también se aplica al uso de "git filter-branch", según los documentos.

+1

He estado buscando una excusa para usar la herramienta por un tiempo, pero los documentos son muy poco complejos, no hay ejemplos. Es bueno tener un ejemplo para "simplemente eliminar un archivo maldito" con repositorio. – cmc

4

Para eliminar por completo un archivo de un repositorio git y su historial, use estos comandos.

# Check out the remote repo 
git clone git://host/path/repo.git 
cd repo 

# Clobber the file in your checkout 
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch file-to-purge.txt' --prune empty --tag-name-filter cat -- --all 

# Make sure you don't accidentally commit the file again 
echo file-to-purge.txt >> .gitignore 
git add .gitignore 
git commit -m "Prevent accidentally committing this again" .gitignore 

# Push the edited repo. This will break other people's clones, if any. 
git push origin master --force 

Para obtener más información, remove sensitive data guía en GitHub le ayudará.

0

Si puede editar el servidor, puede restablecer el bifurcador al anterior (HEAD ^).

  • Antes que nada, obtenga HEAD^hash al que desea "revertir".
  • ir a (directorio del repositorio de git bare en el servidor)/refs/heads, cambiar a git de usuario (o cualquiera de los servicios de git), ejecutar "echo (hash)> (nombre de rama)" para restablecer.

eso es todo. Por cierto, no puede cambiar el repositorio tirado antes de lo que hizo anteriormente

Cuestiones relacionadas