ver tag pretty pendientes modificados log crear commits archivos git

tag - ¿Buscar todo el historial de Git por una cadena?



git ver archivos modificados (3)

Esta pregunta ya tiene una respuesta aquí:

Tengo una base de código que quiero enviar a GitHub como código abierto. En este árbol de fuentes controlado por git, tengo ciertos archivos de configuración que contienen contraseñas. Me aseguré de no rastrear este archivo y también lo .gitignore archivo .gitignore . Sin embargo, quiero estar absolutamente seguro de que no se enviará información confidencial, tal vez si algo se desliza entre comillas o algo así. Dudo que fui lo suficientemente descuidado para hacer esto, pero quiero ser positivo .

¿Hay una manera de "grep" todos git? Sé que suena raro, pero por "todos" creo que me refiero a todas las versiones de los archivos que alguna vez fueron. Supongo que si hay un comando que vuelca el archivo diff para cada confirmación, ¿podría funcionar?


Git puede buscar diffs con la opción -S (se llama pickaxe en los documentos )

git log -Spassword

Esto encontrará cualquier confirmación que haya agregado o eliminado la password cadena. Aquí algunas opciones:

  • -p : mostrará las diferencias. Si proporciona un archivo (archivo -p file ), generará un parche para usted.
  • -G : busca diferencias cuya línea agregada o eliminada coincida con la expresión regular dada, a diferencia de -S , que "busca diferencias que introducen o eliminan una instancia de cadena".
  • --all : busca en todas las ramas y etiquetas; alternativamente, use --branches[=<pattern>] o --tags[=<pattern>]

Pruebe los siguientes comandos para buscar la cadena dentro de todos los archivos rastreados anteriores:

git log --patch | less +/searching_string

o

git rev-list --all | GIT_PAGER=cat xargs git grep ''search_string''

que debe ejecutarse desde el directorio principal donde desea realizar la búsqueda.


git rev-list --all | ( while read revision; do git grep -F ''password'' $revision done )