【问题标题】:Replace commit history by email通过电子邮件替换提交历史
【发布时间】:2020-02-06 04:52:11
【问题描述】:

我在提交我的仓库时使用了错误的电子邮件。

我发现 [这个脚本][1] 可以让我替换错误的提交。它确实有效,但原来的错误提交仍然存在。

因此,现在 repo 有 15 个错误提交 + 15 个正确提交,而不是 15 个错误提交。

【问题讨论】:

    标签: bash git github commit git-rewrite-history


    【解决方案1】:

    你需要使用过滤器分支

    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 `
    

    如果您是ONLY 提交到此存储库的用户,您可以简单地更新所有引用而不检查旧内容

    git filter-branch -f --env-filter '
        GIT_AUTHOR_NAME="Newname"
        GIT_AUTHOR_EMAIL="newemail"
        GIT_COMMITTER_NAME="Newname"
        GIT_COMMITTER_EMAIL="newemail"
      ' HEAD
    

    【讨论】:

    • 我是唯一的贡献者,但我会牢记这一点。这会删除我的仓库中的重复提交吗?
    • 不,它不会删除旧的提交。在此处阅读如何在更改之前“移回”到提交,然后从此时开始执行它。 stackoverflow.com/questions/34519665/…
    • 我知道我为什么将其添加为评论
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多