Git Tracking-Block von Code verschoben / entfernt in einer Datei

9

Ich habe ein altes Commit md5hash auf myfile.extension mit SOME CHANGE im Commit-Body (nicht den Commit-Titel / Metadaten).

Wie kann ich eine Liste von Commits mit SOME CHANGE modifiziert (nicht nur vorhanden) in den Commits erstellen, die zu HEAD von md5hash führen, ohne jedes diff zu inspizieren? (von denen es leider viele im aktuellen Fall gibt.)

Ich habe git rev-list --all | xargs git grep 'SOME CHANGE' versucht, aber das scheint alle commits mit SOME CHANGE zu finden, die in der Datei sind.

git blame scheint nutzlos, da sich die Zeilen geändert haben und SOME CHANGE verschoben wurde.

    
sjakubowski 12.11.2015, 21:44
quelle

3 Antworten

4

Ich denke, die Antwort, nach der Sie suchen, ist git --no-pager log --pretty="%H" -G"SOME CHANGE" -- myfile.extension .

Zuerst dachte ich an git log -S , aber es betrifft nur add / remove. git log -G würde wahrscheinlich nahe an dem sein, was Sie wollen. Hier können Sie den Unterschied zwischen -S und -G sehen, und ich habe auch den vollständigen Commit-Verlauf eingefügt, damit Sie sehen können, was nicht abgedeckt ist. Lies die Commit-Nachrichten für eine Beschreibung dessen, was ich im Body getan habe.

%Vor%

Um es mit nur den Hashes zu bekommen:

%Vor%     
Michael Barker 18.11.2015, 21:27
quelle
0

Dies würde immer noch ein wenig durchwaten, aber das könnte Sie näher bringen:

%Vor%

Dies zeigt den Patch für jedes Commit an, zeigt den Sha an, den es betrachtet, und spuckt dann die entsprechende Codezeile aus. Der relevante Sha für das Match liegt über dem Match.

Sie könnten die Pipeline weiterführen, um die Ergebnisse noch mehr zu bereinigen, wenn dies ein praktikabler Weg ist.

    
Jonathan.Brink 18.11.2015 21:07
quelle
0

Ich denke, Sie suchen:

%Vor%
  

Suchen Sie nach Unterschieden, die die Anzahl der Vorkommen der angegebenen Zeichenfolge (z. B. Hinzufügen / Löschen) in einer Datei ändern. Vorgesehen für den Gebrauch des Scripters.

     

Dies ist nützlich, wenn Sie nach einem genauen Code-Block (wie einer Struktur) suchen und den Verlauf dieses Blocks seit seiner Entstehung kennenlernen möchten: Verwenden Sie das Feature iterativ, um den interessanten Block in der preimage zurück in -S, und weiter so, bis Sie die allererste Version des Blocks bekommen.

    
arekolek 18.11.2015 21:27
quelle

Tags und Links