だから私は以前のコミットのメールアドレスを変更する方法についてたくさん読んだが、何らかの理由で私のものは更新されていない。
ローカルメール([email protected])を使用してプライベートリポジトリに40回コミットするのが好きでした。これは、このメールがgithubに関連付けられていない(関連付けられていない)ためです。
その後、以前にgit.configを設定する必要があったことを思い出したので、次のようにしました。
git config user.email "[email protected]"
テストコミットを行ったところ、完全に機能しました。
以前のすべてのコミットをこの新しい電子メールに戻す方法はありますか?
私はこの質問をSO Gitでの複数のコミットの作成者とコミッター名と電子メールを変更する で読んでこれを使用しました
git filter-branch -f --env-filter "
GIT_AUTHOR_EMAIL='[email protected]';
GIT_COMMITTER_EMAIL='[email protected]';
"
HEAD
しかし、それはDID機能しません.... local電子メールアドレスとして.patch拡張子を持つ以前のコミットの電子メールをまだ見ることができます
あなたは確かにこのように一度に多くのコミットのために彼を行うことができます:
git rebase -i HEAD~40 -x "git commit --amend --author 'Author Name <[email protected]>' --no-edit"
私はこれを この答え でうまく解決しました。
あなたがあなたの質問(あなたが見つけた答えへのリンク)で述べたように、これは確かにスクリプトです。
filter-branch
はrebaseを実行しています(willrewriteブランチの履歴)これは、ブランチのコピーを持っていたすべての人がそれを削除して再度チェックアウトする必要があることを意味します。
スクリプトOriginはここからです- Git-Tools-Rewriting-History :
# Loop over all the commits and use the --commit-filter
# to change only the email addresses
git filter-branch --commit-filter '
# check to see if the committer (email is the desired one)
if [ "$GIT_COMMITTER_EMAIL" = "<Old Email>" ];
then
# Set the new desired name
GIT_COMMITTER_NAME="<New Name>";
GIT_AUTHOR_NAME="<New Name>";
# Set the new desired email
GIT_COMMITTER_EMAIL="<New Email>";
GIT_AUTHOR_EMAIL="<New Email>";
# (re) commit with the updated information
git commit-tree "$@";
else
# No need to update so commit as is
git commit-tree "$@";
fi'
HEAD
すべてのコミットをループし、一致するものが見つかると、コミッターの名前と電子メールを置き換えます。