Pregunta

Hace un momento noté que mi archivo .gitconfig era público en mi repositorio. Contiene mis tokens secretos.

I git-add -u el archivo y confirmado. No estoy seguro de si este comando también elimina el archivo de las confirmaciones anteriores.

Quiero estar seguro y buscar el archivo en mis confirmaciones anteriores de modo que no haya tal archivo en mi historial.

¿Cómo puede buscar el archivo en confirmaciones anteriores?


Corro

git filter-branch --tree-filter 'rm .gitconfig' master     # Thanks to Greg!

me sale

Rewrite 84dabfa2ea195ce9aad0309216858b302150017c (1/25)rm: .gitconfig: No such file or directory
tree filter failed: rm .gitconfig

El mensaje de error me sugiere que no tengo el archivo en mi historial de confirmación.

¿Hay alguna forma de buscar el archivo en mi historial de confirmación de modo que no necesite ejecutar la eliminación para ver que no tengo el archivo en mi historial de confirmación?

¿Fue útil?

Solución

Respuesta corta:

git filter-branch --tree-filter 'rm -f .gitconfig' master   

Tenga en cuenta la -f.

Respuesta larga:

rm devolvería un código de retorno distinto de cero cuando el archivo no existe. filter-branch piensa que esto es un error y detiene la reescritura. Agregar <=> evitar esto.

Nota :

Hay un comando alternativo:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch .gitconfig' master

que es MUCHO más rápido. Este comando está documentado en la sección EJEMPLO de la página del manual.

Otros consejos

Para eliminar un archivo de todo el historial de Git anterior, deberá volver a escribir todas las confirmaciones anteriores utilizando algo como git filter-branch . Sin embargo, hacer esto hace que su nuevo árbol no se pueda combinar con todos los árboles pasados, así que hágalo con cuidado.

Restablece todas las ewvisions en el repositorio a los valores predeterminados globales (.gitconfig).

git filter-branch -f --commit-filter 'GIT_COMMITTER_NAME="`git config --get user.name`";GIT_AUTHOR_NAME="`git config --get user.name`";GIT_COMMITTER_EMAIL="git config --get user.email";GIT_AUTHOR_EMAIL="`git config --get user.email`";git commit-tree "$@";' HEAD
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top