Aqui está uma maneira mais simples e "pura Git" de fazer isso, sem necessidade de pipeline:
git log --diff-filter=A -- foo.js
Verifique a documentação. Você pode fazer o mesmo com Excluídos, Modificados etc.
https://git-scm.com/docs/git-log#Documentation/git-log.txt---diff-filterACDMRTUXB82308203
Eu tenho um alias útil para isso, porque eu sempre esqueço:
git config --global alias.whatadded 'log --diff-filter=A'
Isso torna tão simples quanto:
git whatadded -- foo.js
O liner abaixo procurará recursivamente os subdiretórios do $PWD
for, foo.js
sem precisar fornecer um caminho absoluto ou relativo ao arquivo, nem o arquivo precisará estar no mesmo diretório que o$PWD
git log --diff-filter=A -- **foo.js
git log --diff-filter=A -- *subfolder/foo.js
git log --diff-filter=A -- foo.js
não imprimiu o comprometer ID / hash para STDOUT no meu terminal em vez i teve que fornecer o caminho relativo para o arquivo a partir da raiz repo git, a fim de obter os resultados desejadosfonte
--follow
.O seguinte pode não ser do seu interesse, mas acho que o ajudará no futuro e faz parte do ecossistema de depuração no Git:
Você pode usar
git-blame
para mostrar qual revisão e autor modificou pela última vez cada linha de um arquivo, especialmente a anotação de arquivo. Visite https://git-scm.com/book/en/v2/Git-Tools-Debugging-with-GitPor exemplo,
fonte