Estou tentando listar os nomes de todos os arquivos que existiram em qualquer ponto do histórico de uma ramificação, mas que foram excluídos posteriormente e não existem no commit mais recente dessa ramificação.
As respostas em outras perguntas semelhantes (mas não idênticas) sugerem o seguinte:
git log --all --pretty=format: --name-only --diff-filter=D
mas isso lista todas as operações individuais de exclusão de arquivos de todos os commits no histórico da ramificação, sem considerar se os arquivos foram adicionados novamente.
Eu uso o git regularmente o suficiente para ser perigoso e minha terminologia pode estar um pouco errada, então aqui está um exemplo concreto do que estou tentando fazer:
git init
:: add three files
echo aaa > aaa.txt
echo bbb > bbb.txt
echo ccc > ccc.txt
git add --all
git commit -m "initial commit"
:: delete aaa.txt, bbb.txt
del aaa.txt
del bbb.txt
git add --all
git commit -m "delete aaa.txt, bbb.txt"
:: re-add aaa.txt
echo zzz > aaa.txt
git add --all
git commit -m "re-add aaa.txt"
Estou tentando descobrir qual comando preciso listar bbb.txt
- não me importo que aaa.txt
tenha sido excluído em algum momento porque foi adicionado novamente posteriormente, portanto, atualmente existe na ponta do galho.
Também não estou preocupado com o conteúdo dos arquivos, apenas identificando os nomes/caminhos dos arquivos "ausentes".
Especificamente, gostaria que a saída deste comando hipotético fosse:
bbb.txt
Se a saída também puder listar o commit mais recente do qual os arquivos "ausentes" foram excluídos, isso será um bônus, mas não essencial.