Hier ist ein Einzeiler Shell-Skript (in mehr als eine Zeile für Formatierungszwecke aufgeteilt), die die Rev-Nummern von aktuellen Zweig-erreichbaren Commits affectin extrahiert g path
wobei git show -p
das angegebene pattern
enthält. Es ist nicht perfekt (es wird Commit-Nachrichten sowie Diffs übereinstimmen), aber es sollte einfach sein, wie Sie möchten, von hier aus zu optimieren.
git rev-list HEAD -- path |
while read rev; do
if git show -p $rev | grep pattern >/dev/null; then
echo $rev
fi
done
Beachten Sie, dass git show
mit, beispielsweise ersetzen können, git diff $rev^ $rev
(beachten Sie, dass diese vergleicht nur gegen First-Eltern, wenn es sich um eine Zusammenführung ist) oder git whatchanged $rev
, oder was auch immer Sie mögen. Der Haupttrick besteht darin, mit git rev-list
zu beginnen, um alle Kandidaten zu extrahieren (commits, die den gegebenen Pfad beeinflussen; lassen Sie den -- path
Teil weg, um alle commits zu erhalten, die von HEAD
beginnen). Siehe git-rev-list(1) für viele andere Dinge, die Sie mit git rev-list
tun können.
Haben Sie etwas dagegen, die Antworten? Ich glaube, die anderen Antworten sind besser als ein Skript (würde eigentlich eine Zeile sein) und eine liefert eine detailliertere Erklärung. –