Ich möchte meinen Vor- und Nachnamen sowie meine E-Mail-Adresse in allen Commits ändern. Ist dies möglich?
git
git-filter-branch
Joshua
quelle
quelle
Antworten:
Verwenden Sie
git-filter-branch
.Dies betrifft nur den Autor, nicht den Committer (der für die meisten Commits mit dem Autor identisch ist). Wenn Sie diese ebenfalls neu schreiben möchten, legen Sie die Variablen
GIT_COMMITTER_NAME
und festGIT_COMMITTER_EMAIL
.Es gilt die Standardwarnung zum Umschreiben des Verlaufs. Machen Sie es nur mit der Geschichte, die noch nicht geteilt wurde.
Juni 2018 Update
Das Handbuch enthält jetzt eine Lösung, die
--env-filter
in ihren Beispielen Folgendes verwendet : https://git-scm.com/docs/git-filter-branch#_examples :quelle
msysgit
, haben Sie weiterhin Zugriff aufbash
. Ansonsten habe ich keine Ahnung.So schreiben Sie sowohl den Autor als auch den Commiter in allen ausgewählten Commits neu:
quelle
git push --all origin --force
Wenn es keine anderen Autoren gibt, können Sie Folgendes tun:
quelle
Speichern Sie das folgende Skript als zB
~/.bin/git-replace-author
und führen Sie es aus mit zB:Ohne Argumente werden alle Commits mit Ihrem Namen aktualisiert, um Ihre aktuelle E-Mail-Adresse gemäß der Git-Konfiguration zu verwenden.
Raw (zum Download)
quelle
~/.bin/
muss sich innerhalb der Benutzer befinden$PATH
und die Datei muss ausführbar sein, also führen Sie Folgendes aus :chmod +x ~/.bin/git-replace-author
.Nur wenn Sie Ihre Verpflichtungen nicht in die Welt gedrängt haben. Andernfalls hat jeder andere Ihren alten Namen in seinem Repo, was unwahrscheinlich ist, dass Sie den Namen aller ändern können.
quelle
Mit Git 2.24 (Q4 2019) ist
git filter-branch
(und BFG) veraltet .Das Äquivalent wäre, using
newren/git-filter-repo
und sein Beispielabschnitt :mit
my-mailmap
:Dies würde den Namen des Autors und die E-Mail-Adresse eines Commits ersetzen, das von jemandem mit ausgeführt wurde
<[email protected]>
Siehe
git shortlog
Abbildung Autor Abschnitt für die genaue Syntaxquelle