Ich habe einen Zweig rebased und nun haben alle Commits einen Committer-Abschnitt, den ich komplett entfernen möchte (nicht nur die Felder ändern). Ist es möglich ohne die ursprünglichen Autoreninformationen zu verlieren?Committer-Informationen aus Git-Commits entfernen
5
A
Antwort
4
Dank @sergej und GitHub, bekam ich Committer info entfernt mit
git filter-branch --env-filter '
if [ "$GIT_COMMITTER_EMAIL" != "$GIT_AUTHOR_EMAIL" ]; then
export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
fi
' --tag-name-filter cat -- --branches --tags
2
Sie müssen den gesamten Verlauf Ihres Git-Repository neu schreiben.
GitHub hat ein Skript, das das tut, siehe Changing author info.
Es sollte einfach sein, es auf Ihre Bedürfnisse zu übernehmen:
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="[email protected]"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="[email protected]"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
Dank. Verstehe ich richtig, dass wenn "GIT_COMMITTER_NAME" usw. mit "GIT_AUTHOR_NAME" usw. übereinstimmt, dies als entfernt betrachtet wird? – Andrei
Ja, nur getestet, scheint der Fall zu sein – Andrei