Ich möchte meinen Namen, Nachnamen und E-Mail in allen meinen Commits ändern, ist es möglich?Kann ich meinen Namen und Nachnamen in allen vorherigen Commits ändern?
Antwort
Verwenden Sie git-filter-branch
.
git filter-branch --commit-filter 'if [ "$GIT_AUTHOR_NAME" = "Josh Lee" ];
then export GIT_AUTHOR_NAME="Hobo Bob"; export [email protected];
fi; git commit-tree "[email protected]"'
Dies betrifft nur den Autor, nicht der Committer (was für die meisten Commits wird das gleiche wie der Autor sein). Wenn Sie diese auch neu schreiben wollen, stellen Sie die Variablen GIT_COMMITTER_NAME
und GIT_COMMITTER_EMAIL
ein.
Die standard warning über Umschreibungsgeschichte gilt; tue es nur der Geschichte, die noch nicht geteilt wurde.
Aber was tun auf Windows? – Joshua
Wenn Sie 'msysgit' verwenden, haben Sie immer noch Zugriff auf' bash'. Sonst habe ich keine Ahnung. –
@Joshua aktualisiert, weil ich die Committer Info vergessen habe. –
Nur wenn Sie Ihre Commits nicht auf die Welt geschoben haben. Ansonsten hat jeder andere Ihren alten Namen in seinem Repo, was unwahrscheinlich ist, dass Sie jeden ändern können.
Wahr, aber in einigen Fällen haben Sie keine Wahl. In meinem Fall hatte ich eine falsche E-Mail-Adresse konfiguriert in meiner git config (wie ich mit "git config --global -l" sehen konnte). Aus diesem Grund hatte ich keine Commit-Aktivität in meinem eigenen Github-Repo (weil die E-Mail-Adresse nicht mit der in Github konfigurierten E-Mail-Adresse übereinstimmte)! Um dies zu beheben, habe ich meine lokalen Commits mit dem Rezept von http://stackoverflow.com/a/23564785/2474068 (funktioniert perfekt) und dann habe ich die geänderten commits nach Github mit "git push -u -f origin master" (mit dem Force-Flag "-f"). Das widerspricht der gängigen Praxis, aber ich hatte keine Wahl! – leo
Ja, mein Punkt war, dass jede Gabelung dieses Repos diese Änderung nicht haben würde, wenn sie Ihren Kraftstoß nicht akzeptierten. Es wäre schwierig, jede Gabel zu aktualisieren :) – EnabrenTane
Wenn es keine anderen Autoren sind, können Sie tun:
git filter-branch --commit-filter 'export GIT_AUTHOR_NAME="authorname"; \
export [email protected]; git commit-tree "[email protected]"'
Es ist nicht neu schreiben "Committer:" info. – user11153
Es ist nicht beabsichtigt, Committer-Informationen neu zu schreiben. Wenn Sie dies tun möchten, exportieren Sie auch GIT_COMMITTER_NAME und GIT_COMMITTER_EMAIL (siehe akzeptierte Antwort). – chronospoon
Um sowohl Autor und commiter in allen ausgewählten Commits zu umschreiben:
git filter-branch --commit-filter \
'if [ "$GIT_AUTHOR_NAME" = "OldAuthor Name" ]; then \
export GIT_AUTHOR_NAME="Author Name";\
export [email protected];\
export GIT_COMMITTER_NAME="Commmiter Name";\
export [email protected];\
fi;\
git commit-tree "[email protected]"'
Speichern Sie das Skript unten wie z.B. ~/.bin/git-replace-author
und führen Sie es verwenden, z: Ihre aktuelle E-Mail-Adresse verwenden nach Git Config
git replace-author "John Ssmith" "John Smith" "[email protected]"
Ohne Argumente, aktualisiert sie alle mit Ihrem Namen verpflichtet.
DEFAULT_NAME="$(git config user.name)"
DEFAULT_EMAIL="$(git config user.email)"
export OLD_NAME="${1:-$DEFAULT_NAME}"
export NEW_NAME="${2:-$DEFAULT_NAME}"
export NEW_EMAIL="${3:-$DEFAULT_EMAIL}"
echo "Old:" $OLD_NAME "<*>"
echo "New:" "$NEW_NAME <$NEW_EMAIL>"
echo "To undo, use: git reset $(git rev-parse HEAD)"
git filter-branch --env-filter \
'if [ "$GIT_AUTHOR_NAME" = "${OLD_NAME}" ]; then
export GIT_AUTHOR_NAME="${NEW_NAME}"
export GIT_AUTHOR_EMAIL="${NEW_EMAIL}"
export GIT_COMMITTER_NAME="${NEW_NAME}"
export GIT_COMMITTER_EMAIL="${NEW_EMAIL}"
fi'
Raw (zum Download)
Als eine kurze Anmerkung: '~/.bin /' muss in den Benutzern '$ PATH' sein und die Datei muss ausführbar sein, so dass sie laufen : 'chmod + x ~/.bin/git-replace-author'. –
- 1. Entfernen Sie ein Verzeichnis von allen vorherigen Commits
- 2. Wie kann ich meinen Zeitzonen-Offset ändern?
- 3. Wiederherstellen eines vorherigen Git-Commits?
- 4. Wie kann ich einen Namen, zweiten Vornamen und Nachnamen mithilfe von Regex in Java validieren?
- 5. Wie kann ich meinen Firmennamen in meinem itunes connect ändern?
- 6. Ich brauche nächsten und vorherigen für meinen dynamischen Inhalt
- 7. Übersetzen von Namen/Nachnamen aus dem Arabischen
- 8. Liste unpushed commits in allen Niederlassungen
- 9. Nehmen Sie ein Array voller Namen und sortieren nach Nachnamen
- 10. Wie kann ich eine Umgebungsvariable in allen laufenden Shells ändern?
- 11. Kann ich Commits gleichzeitig rebasen und zerquetschen?
- 12. Muss ich auf allen meinen Seiten `[ValidateAntiForgeryToken] und @ Html.AntiForgeryToken()` verwenden?
- 13. Wie bekomme ich den vorherigen Tag-Namen?
- 14. Kann ich den Namen von `nohup.out` ändern?
- 15. muss ich meinen Projektnamen ändern
- 16. Extrahieren von Nachnamen aus einem Vektor von Namen in R
- 17. Kann ich meinen Domain-Namen auf eine Azure-Website verweisen?
- 18. AdMob in allen meinen View-Controllern?
- 19. Parse 'Familie' Namen in Menschen + Nachnamen mit regex
- 20. Wie bekomme ich den Vornamen und den Nachnamen als vollständigen Namen in einer MYSQL-Abfrage?
- 21. Show View in allen meinen App
- 22. Ansicht erstellen und in allen Tabellen ändern
- 23. Regex zur vorherigen Namen übereinstimmen
- 24. Wie kann ich zurück 1 Datei ändern rollen in meinem vorherigen begehen
- 25. Wie kann ich Commits in Git überspringen?
- 26. Wie kann ich einen UserProfile-Wert in allen meinen Vorlagen suchen?
- 27. eine Datei in allen commits in git bearbeiten
- 28. Wie kann ich den Namen des Primärschlüssels in Doctrine ändern
- 29. Wie bekomme ich meinen vorherigen Wert auf sql?
- 30. Wie kann ich meinen FavIcon ständig ändern lassen?
Ist es ein reprository nur für Sie, für ein paar Leute oder für ein großes Projekt? – thejh
möglich duplicate of [Wie ändere ich den Autor eines Commits in git?] (Http://stackoverflow.com/questions/750172/how-do-i-change-the-author-of-a-commit-in -git) –
mögliches Duplikat von [Wie überschreibe ich Committer-Namen in einem Git-Repository?] (http://StackOverflow.com/questions/1566809/how-do-rewrite-committer-names-in-a-git -repository) –