Hier ist eine Lösung, die die von Noufal und Claytontstanley kombiniert und es vermeidet, Dateien zu berühren, die sich nicht ändern.
Im [alias]
Block meiner ~/.gitconfig
Datei:
psed = !sh -c 'git grep --null --full-name --name-only --perl-regexp -e \"$1\" | xargs -0 perl -i -p -e \"s/$1/$2/g\"' -
Zu verwenden:
git psed old_method_name new_method_name
Danke an Noufal und Greg für ihre Beiträge. Ich habe ihre Lösungen kombiniert und eine gefunden, die git grep verwendet (robuster als git ls-files für mein Repo, da es anscheinend nur die Dateien auflistet, die tatsächlichen src-Code enthalten - beispielsweise keine Submodulordner) und dies auch hat der alte Methodenname und der neue Methodenname an nur einer Stelle:
Im [alias]
Block meiner ~/.gitconfig
Datei:
sed = ! git grep -z --full-name -l '.' | xargs -0 sed -i -e
Zu verwenden:
git sed 's/old-method-name/new-method-name/ig'
Sie könnten git ls-files
verwenden in Kombination mit xargs
und sed
:
git ls-files -z | xargs -0 sed -i -e 's/old-method-name/new-method-name/g'
Du könntest ein
machenfor i in $(git grep --full-name -l old_method_name)
do
perl -p -i -e 's/old_method_name/new_method_name/g' $i
done
Stecken Sie das irgendwo in eine Datei und aliasieren Sie es dann als git sed
in deiner Konfig.
Aktualisierung: Der Kommentar von tchrist unten ist eine viel bessere Lösung, da er verhindert, dass Perl wiederholt erscheint.