删除更改git提交作者详细信息时发生的重复提交

删除更改git提交作者详细信息时发生的重复提交,git,github,Git,Github,我想更改以前提交的提交者的详细信息。问题是,当我尝试更改时,我看到来自两个用户名的重复提交 下面是完整的故事。我在GitHub上创建了一个存储库。我用git-clome命令在我的机器上克隆了那个repo。我最近格式化了机器,但我从旧机器复制了SSH密钥,我认为它可以工作(我不知道如何设置git config命令)。我开始做这个项目,做了一些承诺。当我看到为什么我的提交没有显示在github贡献上时,我在Committer详细信息中看到它没有考虑我的github用户详细信息。我在谷歌上搜索并看到了

我想更改以前提交的提交者的详细信息。问题是,当我尝试更改时,我看到来自两个用户名的重复提交

下面是完整的故事。我在GitHub上创建了一个存储库。我用git-clome命令在我的机器上克隆了那个repo。我最近格式化了机器,但我从旧机器复制了SSH密钥,我认为它可以工作(我不知道如何设置git config命令)。我开始做这个项目,做了一些承诺。当我看到为什么我的提交没有显示在github贡献上时,我在Committer详细信息中看到它没有考虑我的github用户详细信息。我在谷歌上搜索并看到了解决方案,然后在master(而不是HEAD)上运行相同的程序

现在我看到重复提交,来自两个用户名的提交消息相同。以下是截图:

在我尝试运行脚本之前,我确实有整个事情的备份

  • 我在执行那个命令时犯了什么错误吗?如果是,我可以尝试在备份副本上运行它。如果它解决了问题,那么如何将其推送到github上

  • 现在,对于当前一个具有重复提交详细信息的文件,我如何删除它们并修复它

  • 以下是我从该链接运行的命令:

    git filter-branch --commit-filter '
            if [ "$GIT_COMMITTER_NAME" = "avi" ];
            then
                    GIT_COMMITTER_NAME="avinassh";
                    GIT_AUTHOR_NAME="avinassh";
                    GIT_COMMITTER_EMAIL="email which I use for GitHub";
                    GIT_AUTHOR_EMAIL="email which I use for GitHub";
                    git commit-tree "$@";
            else
                    git commit-tree "$@";
            fi' HEAD
    

    使用GitHub的官方软件,效果非常好。我使用了原始repo的克隆副本上的脚本,它有两个用户名。然后我用力推了推。一切似乎都很好

    这件事刚才发生在我身上。我犯的错误是,在更新远程GitHub存储库之后,我没有创建它的新克隆,而是继续使用旧版本,其中仍然包含具有旧名称的提交。一旦我从这个旧克隆中推送,旧的提交就被推送,现在有重复的提交

    如果您在重命名之前有存储库的备份,我认为从备份中重新开始更容易,但要小心不要重复相同的错误-任何已克隆的存储库(由您或任何其他人克隆)都需要在处理其历史记录后删除并再次克隆

    我还尝试使用TortoiseGit Switch/Checkout命令(对应于
    git.exe Checkout master--
    命令)切换到存储库,它似乎也可以工作,但您肯定需要确保所有克隆的存储库都以某种方式更新以匹配远程版本,否则,一旦你从他们身上推开,他们就会打破它

    由于我没有足够小心地进行备份,因此我已采取以下措施进行修复:


    在我的例子中,历史记录重复了两组相同的提交,从脚本操纵的第一个提交开始。在第一次复制之前,我复制了最后一次提交的SHA,并执行了
    git reset
    ,然后执行
    git push--force
    。然后,我确保删除并再次克隆所有现有克隆。

    该链接评论中可能有相关问题:@ChrisHayes不起作用:(我认为任何存储库克隆都需要删除并再次克隆(见我的答案)。