Para alterações ocultas em confirmações de mesclagem
As confirmações de mesclagem automaticamente ocultam suas alterações na saída do log do Git. Ambos picareta e reverse-culpa não encontrou a mudança. Então a linha que eu queria tinha sido adicionada e removida mais tarde e eu queria encontrar a mesclagem que a removeu. O git log -p -- path/filehistórico do arquivo apenas mostrou que ele foi adicionado. Aqui está a melhor maneira que encontrei para encontrá-lo:
git log -p -U9999 -- path/file
Pesquise a alteração e, em seguida, pesquise "^ commit" - o primeiro "^ commit" é o commit em que o arquivo tinha essa linha pela última vez. O segundo "^ commit" é depois que desapareceu. O segundo commit pode ser o que o removeu. O -U9999objetivo é mostrar o conteúdo inteiro do arquivo (após cada vez que o arquivo foi alterado), assumindo que seus arquivos tenham no máximo 9999 linhas.
Localiza todas as mesclagens relacionadas via força bruta (difira cada confirmação de mesclagem possível com seu primeiro pai, execute várias toneladas de confirmações)
git log --merges --pretty=format:"git diff %h^...%h | grep target_text" HEAD ^$(git merge-base A B) | sh -v 2>&1 | less
(Tentei restringir mais o filtro de revisão, mas encontrei problemas e não o recomendo. As alterações de adição / remoção que eu procurava estavam em ramos diferentes que foram mesclados em momentos diferentes e A ... B não incluiu quando as alterações foram mescladas na linha principal.)
Mostre uma árvore Git com esses dois commits (e muito do histórico complexo do Git foi removido):
git log --graph --oneline A B ^$(git merge-base A B)
(A é o primeiro commit acima, B é o segundo commit acima)
Mostrar histórico de A e histórico de B menos histórico de A e B.
Versão alternativa (parece mostrar o caminho mais linearmente do que a árvore de histórico regular do Git - no entanto, eu prefiro a árvore de histórico regular do Git):
git log --graph --oneline A...B
Três, não dois pontos - três pontos significa "r1 r2 - e não $ (git merge-base - todos os r1 r2). É o conjunto de confirmações que é acessível a partir de r1 (lado esquerdo) ou r2 (direita lado), mas não de ambos. " - fonte: "man gitrevisions"
git log -S<string> /path/to/filedeseja-cou-ccque também mostre remoções durante a mesclagem (conflitos) #