Est-il possible de voir qui a édité une ligne spécifique avant le commit signalé par git blame
, comme un historique des commits pour une ligne donnée?
Par exemple, je lance ce qui suit (sur le superbe uncrustify
projet):
$ git blame -L10,+1 src/options.cpp
^fe25b6d (Ben Gardner 2009-10-17 13:13:55 -0500 10) #include "prototypes.h"
Comment savoir qui a édité cette ligne avant de valider fe25b6d
? Et qui l'a édité avant ce commit?
-w
option. Il y a aussi-M
pour le code déplacé / copiéRéponses:
Vous pouvez spécifier une révision pour git blame à partir de (au lieu de la valeur par défaut de
HEAD
);fe25b6d^
est le parent defe25b6d
.la source
--
est couramment utilisé comme séparateur dans les arguments de ligne de commande - dans le cas de Git, il est généralement utilisé pour séparer des éléments comme la validation des hachages d'une liste de noms de fichiers.Vous pouvez utiliser git log -L pour visualiser l'évolution d'une gamme de lignes.
Par exemple :
signifie "suivre l'évolution des lignes 15 à 23 dans le fichier nommé filename.txt".
la source
La réponse d'Amber est correcte mais je l'ai trouvée peu claire; La syntaxe est:
Remarque: le
--
est utilisé pour séparer l'arborescence is1 sha1 des chemins de fichiers relatifs. 1Par exemple:
Nous remercions Amber pour tout savoir! :)
la source
Vous voudrez peut-être vérifier:
Vous donne un bel affichage graphique des changements comme "git blame" mais avec des liens cliquables par ligne, pour passer aux commits précédents. Passez la souris sur les liens pour obtenir une fenêtre contextuelle avec les détails de validation. Pas mes crédits ... je l'ai trouvé ici:
http://zsoltfabok.com/blog/2012/02/git-blame-line-history/
git gui
est une interface graphique Tcl / Tc pour git. Sans aucun autre paramètre, il démarre une application graphique assez simple mais utile pour valider des fichiers, des morceaux ou même des lignes simples et d'autres commandes similaires comme modifier, rétablir, pousser ... Cela fait partie de la suite de stock git. Sur Windows, il est inclus dans le programme d'installation. Sur debian - je ne connais pas les autres systèmes * nix - il doit être installé séparément:De la documentation:
https://git-scm.com/docs/git-gui
la source
this
: mais comment voir la version précédente de la ligne et quand elle a été ajoutée?En s'appuyant sur la réponse précédente, ce bash one-liner devrait vous donner ce que vous recherchez. Il affiche l'historique de blâme de git pour une ligne particulière d'un fichier particulier, à travers les 5 dernières révisions:
Dans la sortie de cette commande, vous pouvez voir le contenu de la ligne changer, ou le numéro de ligne affiché peut même changer, pour une validation particulière.
Cela indique souvent que la ligne a été ajoutée pour la première fois, après ce commit particulier. Cela pourrait également indiquer que la ligne a été déplacée d'une autre partie du fichier.
la source
Il y en a aussi
recursive-blame
. Il peut être installé avecla source
Une solution très unique à ce problème consiste à utiliser git log:
Comme expliqué par Andre ici
la source
git config --global alias.changes 'log -p -M --follow --stat --'
puis je peux simplement tapergit changes path/to/your/file
Si vous utilisez JetBrains Idea IDE (et dérivés), vous pouvez sélectionner plusieurs lignes, faites un clic droit pour le menu contextuel, puis Git -> Afficher l'historique pour la sélection. Vous verrez la liste des validations qui affectaient les lignes sélectionnées:
la source
Depuis Git 2.23, vous pouvez utiliser git blame --ignore-rev
Pour l'exemple donné dans la question, ce serait:
(mais c'est une question piège car fe25b6d est la première révision du fichier!)
la source
S'appuyant sur la réponse de Will Shepard, sa sortie comprendra des lignes en double pour les validations où il n'y a eu aucun changement, vous pouvez donc les filtrer comme suit (en utilisant cette réponse )
Notez que j'ai supprimé l'argument REVS et cela revient à la validation racine. Cela est dû à l'observation de Max Nanasy ci-dessus.
la source
En s'appuyant sur la réponse de DavidN et je veux suivre le fichier renommé:
ref: affiche bien l'historique des renommages de fichiers dans le journal git
la source
J'utilise ce petit script bash pour regarder une histoire de blâme.
Premier paramètre: fichier à regarder
Paramètres suivants: transmis au blâme
Vous pouvez fournir des paramètres de blâme comme -L 70, + 10, mais il est préférable d'utiliser la recherche regex de git blame car les numéros de ligne "changent" généralement avec le temps.
la source
S'appuyant sur la réponse de Stangls , j'ai mis ce script dans mon CHEMIN (même sous Windows) en tant que git-bh:
Cela me permet de rechercher tous les commits où un mot était impliqué:
Scénario:
la source