Kann ich meinen Vor- und Nachnamen in allen vorherigen Commits ändern?

Lesezeit: 5 Minuten

Kann ich meinen Vor und Nachnamen in allen vorherigen Commits
Josua

Ich möchte meinen Vor- und Nachnamen sowie meine E-Mail-Adresse in meinen All Commits ändern, ist das möglich?

  • Ist es ein Reprositorium nur für Sie, für ein paar Leute oder für ein großes Projekt?

    – diejh

    20. Dezember 2010 um 21:06 Uhr

  • mögliches Duplikat von Wie ändere ich den Autor eines Commits in Git?

    – Josh Lee

    20. Dezember 2010 um 21:32 Uhr

  • mögliches Duplikat von Wie schreibe ich Committer-Namen in einem Git-Repository um?

    – Josh Lee

    28. Februar 2011 um 21:10 Uhr

  • Mögliches Duplikat von Change the author and committer name and e-mail of multiple Commits in Git

    – Stevoisiak

    8. November 2017 um 17:48 Uhr

Kann ich meinen Vor und Nachnamen in allen vorherigen Commits
Josh Lee

Verwenden 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 den Committer (der für die meisten Commits mit dem Autor identisch ist). Wenn Sie diese ebenfalls umschreiben möchten, setzen Sie die GIT_COMMITTER_NAME und GIT_COMMITTER_EMAIL Variablen.

Die Standardwarnung über das Umschreiben der Geschichte gilt; tun Sie es nur mit der Geschichte, die noch nicht geteilt wurde.

Aktualisierung Juni 2018

Das Handbuch enthält jetzt eine Lösung, mit --env-filterin seinen Beispielen: https://git-scm.com/docs/git-filter-branch#_examples :

git filter-branch --env-filter '
    if test "$GIT_AUTHOR_EMAIL" = "[email protected]"
    then
        [email protected]
    fi
    if test "$GIT_COMMITTER_EMAIL" = "[email protected]"
    then
        [email protected]
    fi
' -- --all

  • Wenn Sie verwenden msysgitauf die Sie weiterhin Zugriff haben bash. Ansonsten habe ich keine Ahnung.

    – Josh Lee

    20. Dezember 2010 um 21:59 Uhr

  • @Joshua Wenn Sie etwas verwenden, wo Sie keine Bash haben, könnten Sie wahrscheinlich Windows-Batch-Scripting verwenden, obwohl ich es nicht versucht habe.

    – Tyler

    22. Dezember 2010 um 5:41 Uhr

  • und was ist mit Tags? Diese Lösung ändert den Autor von Tags nicht

    – piotrek

    5. Januar 2015 um 22:37 Uhr


  • @Joshua sehen Sie sich das Git-Repo auf einer Linux-Box an und führen Sie dort die Fehlerbehebung durch

    – Will Sheppard

    11. Mai 2015 um 8:47 Uhr

  • Gibt es Optionen, die zu einem neuen Zweig führen und Quell-Commits intakt lassen?

    – Eugen Konkow

    30. März 2018 um 16:20 Uhr

1646311088 111 Kann ich meinen Vor und Nachnamen in allen vorherigen Commits
Benutzer11153

Um sowohl den Autor als auch den Commiter in allen ausgewählten Commits umzuschreiben:

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]"'

  • Aber wie wendet man Änderungen auf den Remote-Server an?

    – Vikyd

    25. Mai 2017 um 7:56 Uhr

  • @ Viky Versuch git push --all origin --force

    – Benutzer11153

    25. Mai 2017 um 8:09 Uhr


  • Für mich geht das ! Ich verwende GitLab, ich muss den Zweig vor dem Push-Befehl entschützen.

    – Vikyd

    25. Mai 2017 um 8:26 Uhr

1646311088 476 Kann ich meinen Vor und Nachnamen in allen vorherigen Commits
denis.peplin

Wenn es keine anderen Autoren gibt, können Sie Folgendes tun:

git filter-branch --commit-filter 'export GIT_AUTHOR_NAME="authorname"; \
export [email protected]; git commit-tree "[email protected]"'

  • Es schreibt keine “Committer:”-Informationen um.

    – Benutzer11153

    4. Mai 2014 um 13:26 Uhr

  • Es ist nicht beabsichtigt, Committer-Informationen umzuschreiben. Wenn Sie dies tun möchten, exportieren Sie auch GIT_COMMITTER_NAME und GIT_COMMITTER_EMAIL (siehe akzeptierte Antwort).

    – Chronolöffel

    3. November 2014 um 17:59 Uhr

Speichern Sie das folgende Skript als zB ~/.bin/git-replace-author und führen Sie es aus, z.

git replace-author "John Ssmith" "John Smith" "[email protected]"

Ohne Argumente aktualisiert es alle Commits mit Ihrem Namen, um Ihre aktuelle E-Mail-Adresse gemäß der Git-Konfiguration zu verwenden.

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'

Roh (herunterladen)

Nur wenn Sie Ihre Commits nicht in die Welt hinausgeschoben haben. Ansonsten haben alle anderen Ihren alten Namen in ihrem Repo, was unwahrscheinlich ist, dass Sie den aller ändern können.

  • Stimmt, aber in manchen Fällen hat man keine Wahl. In meinem Fall hatte ich eine falsche E-Mail-Adresse in meiner Git-Konfiguration konfiguriert (wie ich mit “git config –global -l” sehen konnte). Infolgedessen wurde in meinem eigenen Github-Repo keine Commit-Aktivität angezeigt (weil die E-Mail-Adresse nicht mit der in Github konfigurierten E-Mail übereinstimmte)! Um dies zu lösen, habe ich meine lokalen Commits mit dem Rezept von stackoverflow.com/a/23564785/2474068 repariert (funktionierte perfekt) und dann habe ich die geänderten Commits mit „git push -u -f origin master“ (mit der force Flagge “-f”). Das widerspricht der gängigen Praxis, aber ich hatte keine Wahl!

    – Löwe

    10. November 2016 um 11:10 Uhr


  • Ja, mein Punkt war, dass alle Gabeln dieses Repos diese Änderung nicht haben würden, es sei denn, sie akzeptierten Ihren Force-Push. Es wäre eine Herausforderung, jeden Fork zum Aktualisieren zu bringen 🙂

    – EnabrenTane

    10. November 2016 um 22:01 Uhr

Kann ich meinen Vor und Nachnamen in allen vorherigen Commits
VonC

Mit Git 2.24 (Q4 2019), git filter-branch (und BFG) ist veraltet.

Das Äquivalent wäre, using newren/git-filter-repound sein Beispiel Abschnitt:

cd repo
git filter-repo --mailmap my-mailmap

mit my-mailmap:

Correct Name <[email protected]> <[email protected]>

Das würde den Namen des Autors und die E-Mail-Adresse jedes Commits ersetzen, der von irgendjemandem durchgeführt wurde <[email protected]>

Sehen git shortlog Mapping-Autorenbereich für die genaue Syntax von

  • Stimmt, aber in manchen Fällen hat man keine Wahl. In meinem Fall hatte ich eine falsche E-Mail-Adresse in meiner Git-Konfiguration konfiguriert (wie ich mit “git config –global -l” sehen konnte). Infolgedessen wurde in meinem eigenen Github-Repo keine Commit-Aktivität angezeigt (weil die E-Mail-Adresse nicht mit der in Github konfigurierten E-Mail übereinstimmte)! Um dies zu lösen, habe ich meine lokalen Commits mit dem Rezept von stackoverflow.com/a/23564785/2474068 repariert (funktionierte perfekt) und dann habe ich die geänderten Commits mit „git push -u -f origin master“ (mit der force Flagge “-f”). Das widerspricht der gängigen Praxis, aber ich hatte keine Wahl!

    – Löwe

    10. November 2016 um 11:10 Uhr


  • Ja, mein Punkt war, dass alle Gabeln dieses Repos diese Änderung nicht haben würden, es sei denn, sie akzeptierten Ihren Force-Push. Es wäre eine Herausforderung, jeden Fork zum Aktualisieren zu bringen 🙂

    – EnabrenTane

    10. November 2016 um 22:01 Uhr

923450cookie-checkKann ich meinen Vor- und Nachnamen in allen vorherigen Commits ändern?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy