git clone <repository-url> ```将 `<repository-url>` 替换为要克隆的仓库的 URL。
git log ```检查要修改的提交记录的哈希值。
# 堆代码 duidaima.com git filter-branch --env-filter ' OLD_EMAIL="old-email@example.com" CORRECT_NAME="New Author Name" CORRECT_EMAIL="new-email@example.com" 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 ```将 `OLD_EMAIL` 替换为要修改的旧邮箱地址,`CORRECT_NAME` 替换为新的作者名字,`CORRECT_EMAIL` 替换为新的邮箱地址。注意,这个命令会将旧的提交记录复制一份,将旧的作者和邮箱替换为新的作者和邮箱。这意味着你需要使用 `git push --force` 命令强制推送修改后的提交记录到远程仓库。
Proceeding with filter-branch... Cannot create a new backup. A previous backup already exists in refs/original/ Force overwriting the backup with -f按要求添加强制’-f‘改为
git filter-branch -f --env-filter
执行完该命令后提示哪些分支及tag的记录被修改(需要注意的是 本地仓库checkout过的分支才会修改哦!所以需要提交每个远程分支都拉一下)
4.使用以下命令强制推送修改后的提交记录到远程仓库:
git push --force --tags origin 'refs/heads/*' ```这个命令会将修改后的提交记录推送到所有分支和标签。