web-dev-qa-db-fra.com

Qu'est-ce que Git Blame fait?

J'ai vu beaucoup de questions sur les méthodes d'utilisation de git blame mais je ne les comprends pas vraiment.

Je vois un bouton blame au-dessus des fichiers de l'interface github. En cliquant dessus, il montre quelques diff avec les noms d'utilisateur sur la barre de gauche. Qu'est-ce que cela indique?

Pourquoi blâme-t-on réellement, à part GitHub?

222
Himanshu Mishra

De git-scm http://git-scm.com/docs/git-blame

Annote chaque ligne du fichier donné avec les informations de la révision qui a modifié la dernière ligne. Vous pouvez éventuellement commencer à annoter à partir de la révision donnée.

Lorsque spécifié une ou plusieurs fois, -L limite l'annotation aux lignes demandées.

Exemple:

[email protected]:~# git blame .htaccess
...
^e1fb2d7 (John Doe 2015-07-03 06:30:25 -0300  4) allow from all
^72fgsdl (Arthur King 2015-07-03 06:34:12 -0300  5)
^e1fb2d7 (John Doe 2015-07-03 06:30:25 -0300  6) <IfModule mod_rewrite.c>
^72fgsdl (Arthur King 2015-07-03 06:34:12 -0300  7)     RewriteEngine On
...

Veuillez noter que git blame ne montre pas l'historique des modifications par ligne au sens chronologique. Cela montre seulement qui était la dernière personne à avoir modifié une ligne dans un document jusqu'au dernier commit dans HEAD.

Cela signifie que pour voir l'historique/le journal complet d'une ligne de document, vous devez exécuter un git blame path/to/file pour chaque validation dans votre git log.

164
Mark

La commande s’explique assez bien, c’est pour déterminer quel collègue a écrit la ligne spécifique ou a ruiné le projet afin que vous puissiez blâmer les :)

106
XRay

De GitHub https://help.github.com/articles/using-git-blame-trace-changes-in-a-file

La commande blame est une fonctionnalité de Git, conçue pour vous aider à déterminer qui a modifié un fichier.

En dépit de son nom à consonance négative, le blâme de Git est en fait assez inoffensif; sa fonction principale est de montrer qui a changé quelles lignes dans un fichier et pourquoi. Cela peut être un outil utile pour identifier les changements dans votre code.

Fondamentalement, git-blame est utilisé pour montrer quelle révision et quel auteur a modifié en dernier lieu chaque ligne d'un fichier. C'est comme vérifier l'historique du développement d'un fichier.

62
Himanshu Mishra

La commande git blame permet de savoir qui/quel commit est responsable des dernières modifications apportées à un fichier. L'auteur/commit de chaque ligne peut également être vu.

git blame filename (responsable des modifications pour toutes les lignes du code)

git blame filename -L 0,10 (responsable des modifications de la ligne "0" à la ligne "10")

Il existe de nombreuses autres options pour blâmer, généralement elles pourraient aider.

25
Bharath T S

La commande git blame annote la ligne avec les informations de la révision qui a modifié la ligne en dernier lieu, et ... avec Git 2.22 (T2 2019), le fera plus rapide , en raison d’un correctif de performances autour de "_git blame_", en particulier dans un historique linéaire (qui est la norme à optimiser).

Voir commit f892014 (02 avril 2019) par David Kastrup (fedelibre) .
(Fusionnée par Junio ​​C Hamano - gitster - dans commit 4d8c4da , 25 avril 2019)

_blame.c_: ne laissez pas tomber les blobs d'origine aussi rapidement

Lorsqu'un blob parent a déjà des morceaux mis en file d'attente pour blâme, si vous le laissez tomber à la fin d'une étape de blâme, il sera immédiatement rechargé, ce qui doublera la quantité d'E/S et décompactera lors du traitement d'un historique linéaire.

Conserver ces blobs parents en mémoire semble être une optimisation raisonnable qui devrait entraîner une pression supplémentaire de la mémoire principalement lors du traitement des fusions d'anciennes branches.

1
VonC