Oto prostszy, „czysty Git” sposób na zrobienie tego, bez potrzeby tworzenia potoków:
git log --diff-filter=A -- foo.js
Sprawdź dokumentację. Możesz zrobić to samo dla usuniętych, zmodyfikowanych itp.
https://git-scm.com/docs/git-log#Documentation/git-log.txt---diff-filterACDMRTUXB82308203
Mam do tego przydatny alias, ponieważ zawsze o tym zapominam:
git config --global alias.whatadded 'log --diff-filter=A'
To sprawia, że jest to tak proste, jak:
git whatadded -- foo.js
Poniżej jeden liner będzie rekurencyjnie przeszukać katalogi Sub $PWD
dla foo.js
bez konieczności dostarczania i bezwzględną lub względną ścieżkę do pliku, nie będzie potrzeba plik będzie w tym samym katalogu, co$PWD
git log --diff-filter=A -- **foo.js
git log --diff-filter=A -- *subfolder/foo.js
git log --diff-filter=A -- foo.js
nie wydrukowało zatwierdzam ID / skrót do STDOUT w moim terminalu, a raczej musiałem podać względną ścieżkę do pliku z katalogu głównego git repo, aby uzyskać pożądane wynikiźródło
--follow
.Poniższe może nie być interesujące, ale myślę, że pomoże ci to w przyszłości i jest częścią debugowania ekosystemu w Git:
Możesz użyć,
git-blame
aby pokazać, która wersja i autor ostatnio zmodyfikowali każdą linię pliku, zwłaszcza adnotację pliku. Odwiedź https://git-scm.com/book/en/v2/Git-Tools-Debugging-with-GitNa przykład,
źródło