Voici une manière plus simple et "pure Git" de le faire, sans aucun pipeline nécessaire:
git log --diff-filter=A -- foo.js
Consultez la documentation. Vous pouvez faire la même chose pour Supprimé, Modifié, etc.
https://git-scm.com/docs/git-log#Documentation/git-log.txt---diff-filterACDMRTUXB82308203
J'ai un alias pratique pour cela, car je l'oublie toujours:
git config --global alias.whatadded 'log --diff-filter=A'
Cela rend aussi simple que:
git whatadded -- foo.js
La ligne ci-dessous recherche récursivement dans les sous-répertoires de $PWD
for foo.js
sans avoir à fournir de chemin absolu ou relatif vers le fichier, et le fichier n'a pas besoin d'être dans le même répertoire que le$PWD
git log --diff-filter=A -- **foo.js
git log --diff-filter=A -- *subfolder/foo.js
git log --diff-filter=A -- foo.js
n'a pas imprimé le commit ID / hash to STDOUT dans mon terminal, je devais plutôt fournir le chemin relatif vers le fichier à partir de la racine git repo afin d'obtenir les résultats souhaitésla source
--follow
.Les éléments suivants peuvent ne pas vous intéresser, mais je pense que cela vous aidera à l'avenir et fait partie du débogage de l'écosystème dans Git:
Vous pouvez utiliser
git-blame
pour montrer quelle révision et quel auteur ont modifié en dernier chaque ligne d'un fichier, en particulier l'annotation de fichier. Visitez https://git-scm.com/book/en/v2/Git-Tools-Debugging-with-GitPar exemple,
la source