delete - git log search commit message



Pesquisar todo o histórico do Git por uma string? (2)

O Git pode pesquisar os diffs com a opção -S (é chamada de pickaxe nos docs )

git log -Spassword

Isto irá encontrar qualquer commit que tenha adicionado ou removido a password da string. Aqui algumas opções:

  • -p : mostrará os diffs. Se você fornecer um arquivo ( -p file ), ele irá gerar um patch para você.
  • -G : procura diferenças cuja linha adicionada ou removida corresponda ao regexp fornecido, ao contrário de -S , que "procura diferenças que introduzam ou removam uma instância de string".
  • --all : procura por todas as ramificações e tags; Como alternativa, use --branches[=<pattern>] ou --tags[=<pattern>]

https://ffff65535.com

Esta questão já tem uma resposta aqui:

Eu tenho uma base de código que eu quero empurrar para o GitHub como código aberto. Nesta árvore de fontes controlada pelo git, eu tenho certos arquivos de configuração que contêm senhas. Certifiquei-me de não rastrear este arquivo e também o adicionei ao arquivo .gitignore . No entanto, quero ter absoluta certeza de que nenhuma informação sensível será empurrada, talvez se algo cair entre os commits ou algo assim. Duvido que tenha sido descuidado o suficiente para fazer isso, mas quero ser positivo .

Existe uma maneira de "grep" all git? Eu sei que soa estranho, mas por "todos" eu acho que quero dizer cada versão do arquivo que já foi. Eu acho que se houver um comando que despeja o arquivo diff para cada commit, isso pode funcionar?


Tente os seguintes comandos para pesquisar a string dentro de todos os arquivos rastreados anteriores:

git log --patch  | less +/searching_string

ou

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

que precisa ser executado a partir do diretório pai onde você gostaria de fazer a pesquisa.





git