Finde git commits, die sich auf einen bestimmten Teil einer Datei beziehen

8

Fall
Oft starre ich auf einen alten Code, der nicht richtig aussieht. Es sieht so aus, als ob etwas entfernt wurde (z. B. hat es eine Schleife, die nichts wert ist, oder sie erzeugt eine Variable, benutzt sie aber nicht), oder etwas ist nur schwer zu verstehen. In diesen Fällen müsste ich wirklich den Verlauf dieses Abschnitts der Datei sehen. Nicht die gesamte Datei, nur dieser Abschnitt oder diese Funktion.

Ideale Lösung
Ein einfacher Befehl wie

%Vor%

um Geschichte von Zeile 10 (möglicherweise mit Umgebung) von Datei books.cpp zu finden, ist wahrscheinlich zu viel Magie zu fragen, aber haben Sie Ideen, wie man diese Geschichte herausarbeitet?

Was ich versucht habe
Ich habe versucht, tschuldigung zu verwenden und dann das Commit vor dem gegebenen Commit dieser Zeile auszuprobieren - wiederhole es, bis ich genug gesehen habe. Aber das ist sehr mühsame Arbeit.

Haben Sie das Bedürfnis nach dieser Funktion gespürt? Hast du einen Weg es zu erreichen? Teilen Sie Ihre Erfahrung!

    
Joel 03.03.2011, 08:56
quelle

2 Antworten

4

Git ist sehr einfach zu erweitern. Erreicht so etwas, was Sie wollen?

%Vor%

Fügen Sie dieses kleine Skript als etwas wie git-linehistory in Ihren Pfad ein und nennen Sie es so:

%Vor%

Es zeigt Ihnen, wie die Zeilen 5 bis 15 bei jedem Commit für diese Datei aussehen.

    
Peter Farmer 03.03.2011, 10:24
quelle
2
  • Mit der Option git blame -L können Sie einen Bereich für die auszugebende Zeile oder sogar einen regulären Ausdruck für die gewünschte Funktion angeben.
  • Sie können auch festlegen, dass Sie bei einem bestimmten Commit die Schuld geben sollen. Dann müssen Sie die Revision nicht vor der Schuld auschecken.

Kurz gesagt können Sie aufeinanderfolgende Aufrufe von git blame -L range <commit> <file-name> ausführen, um den Verlauf von zeilenweisen Änderungen zu durchsuchen.

    
CharlesB 03.03.2011 09:38
quelle

Tags und Links