A Einzelbefehl um den Autor für die letzten N Übertragungen zu ändern:
git rebase -i HEAD~N -x "git commit --amend --author 'Author Name <author.name@mail.com>' --no-edit"
ANMERKUNGEN
- ersetzen.
HEAD~N
mit dem Verweis auf die Stelle, bis zu der Sie Ihre Übertragungen umschreiben wollen. Dies kann ein Hash sein, HEAD~4
einen Zweigniederlassungsnamen, ...
- die
--no-edit
Flagge stellt sicher, dass die git commit --amend
fragt nicht nach einer zusätzlichen Bestätigung
- wenn Sie
git rebase -i
können Sie die Commits, in denen der Autor geändert werden soll, manuell auswählen,
sieht die Datei, die Sie bearbeiten, wie folgt aus:
pick 897fe9e simplify code a little
exec git commit --amend --author 'Author Name <author.name@mail.com>' --no-edit
pick abb60f9 add new feature
exec git commit --amend --author 'Author Name <author.name@mail.com>' --no-edit
pick dc18f70 bugfix
exec git commit --amend --author 'Author Name <author.name@mail.com>' --no-edit
Sie können dann noch einige Zeilen ändern, um zu sehen, wo Sie den Autor ändern wollen. So haben Sie einen guten Mittelweg zwischen Automatisierung und Kontrolle: Sie sehen die Schritte, die ausgeführt werden, und sobald Sie speichern, wird alles auf einmal angewendet.
Beachten Sie, dass Sie, wenn Sie die Autoreninformationen bereits mit git config user.name <your_name>
y git config user.email <your_email>
können Sie auch diesen Befehl verwenden:
git rebase -i HEAD~N -x "git commit --amend --reset-author --no-edit"
17 Stimmen
Frage: Bleiben bei der Verwendung von git filter-branch die SHA1-Werte für frühere Tags, Versionen und Objekte erhalten? Oder werden durch die Änderung des Autorennamens auch die zugehörigen SHA1-Sätze geändert?
0 Stimmen
Oder Sie können versuchen, mit
refs/replace/
Mechanismus.1 Stimmen
Nach der Neufassung, wenn sie ihre Arbeit nicht auf die Geschichte vor der Neufassung gestützt haben, nur
git reset --hard origin/master
oder einfachgit pull origin
(der vorspulen sollte). Wenn sie ihre Änderung als Grundlage nehmen, müssen sie eine neue Basis mitgit rebase origin/master
oder einfachgit pull --rebase origin
(die Befehle sind nur Beispiele).49 Stimmen
Hashes werden sich ändern ja
3 Stimmen
Ich habe ein kleines Skript erstellt, das die Ursache für meine Probleme beseitigt hat. gist.github.com/tripleee/16767aa4137706fd896c
0 Stimmen
@tripleee Ich finde deinen Link/deine Antwort wirklich gut, aber diese Frage ist jetzt etwa 5 Jahre alt. Dies könnte ein großartiger Q&A-Beitrag für andere Nutzer werden (beantworten Sie Ihre eigene Frage). Das wäre nützlicher, anschaulicher und sichtbarer als ein einfacher Kommentar hier.
2 Stimmen
@impinball Das Alter der Frage ist kaum relevant. Eine neue, doppelte Frage zu erstellen, kommt nicht in Frage. Ich nehme an, ich könnte eine Frage erstellen, die um diese spezielle Antwort bittet, aber ich bin nicht ganz davon überzeugt, dass sie so viel Aufmerksamkeit erhalten würde. Es ist ja nicht so, dass es hier einen Mangel an Git-Fragen gäbe... Ich freue mich jedenfalls, dass ich helfen konnte.
0 Stimmen
Diese Antwort ist viel einfacher @Flávio Amieiro stackoverflow.com/a/11768870/670229
3 Stimmen
Das github-Skript, das @TimurBernikovich erwähnt hat, ist großartig und funktioniert bei mir. Aber die github url hat sich geändert: docs.github.com/de/enterprise/2.17/user/github/using-git/
0 Stimmen
Die Antworten könnten zu viel des Guten sein. Prüfen Sie zunächst, ob dies Ihren Anwendungsfall erfüllt - stackoverflow.com/a/67363253/8293309