-1

最近、誤って msysgit のサインオフ機能を使用して、間違った電子メール アドレスで複数のコミットに署名していたことに気付きました。残念ながら、私はすでにコミットを GitHub リポジトリにプッシュしています。

すべてのコミット メッセージから間違った電子メール アドレスを削除する (または少なくとも置き換える) 方法はありますか? 間違ったメールの痕跡を一切残さない方がいいです。

.git ディレクトリとそのサブディレクトリ内のすべてのファイルに出現するすべての電子メール アドレスを置き換えようとし、.git を使用して変更をプッシュしましたgit push --force --tags origin 'refs/heads/*'が、うまくいかないようでした。

注:私は GitHub リポジトリの所有者です。現在はプライベート プロジェクトです。誰もそれに取り組んでいません。

4

1 に答える 1

-1

filter-branch を使用する必要があります

git filter-branch --commit-filter '
        if [ "$GIT_COMMITTER_NAME" = "<Old Name>" ];
        then
                GIT_COMMITTER_NAME="<New Name>";
                GIT_AUTHOR_NAME="<New Name>";
                GIT_COMMITTER_EMAIL="<New Email>";
                GIT_AUTHOR_EMAIL="<New Email>";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' HEAD `

あなたがこのリポジトリにコミットした唯一のユーザーである場合、古いコンテンツをチェックせずにすべての参照を単純に更新できます

git filter-branch -f --env-filter '
    GIT_AUTHOR_NAME="Newname"
    GIT_AUTHOR_EMAIL="newemail"
    GIT_COMMITTER_NAME="Newname"
    GIT_COMMITTER_EMAIL="newemail"
  ' HEAD
于 2015-02-07T18:34:53.583 に答える