我想更改先前提交的提交者的详细信息。 Porblem是我尝试更改的时候,我看到来自两个用户名的重复提交。
这是完整的故事。我在GitHub上创建了一个存储库。我用git clome命令在我的机器上克隆了那个repo。我最近格式化了机器,但是我从旧机器复制了SSH密钥,我认为它可以工作(我不知道如何设置git config命令)。我开始研究项目,做了一些提交。当我看到为什么我的提交没有显示在github贡献时,我在commiiter细节中看到它没有考虑我的GitHub用户细节。我用Google搜索并看到this解决方案并运行相同的程序,在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
答案 0 :(得分:2)
刚才这件事发生在我身上。我做错了是在更新远程GitHub存储库后我没有创建它的新克隆,而是继续使用旧的仍然包含旧名称的提交。一旦我从这个旧的克隆中推出,旧的提交被推送,现在有重复。
如果您在重命名之前备份了存储库,我认为从备份中再次开始更容易,请注意不要重复同样的错误 - 已经克隆的任何存储库(由您或者其他任何人)在你操纵他们的历史后需要删除和克隆。
我也尝试使用TortoiseGit Switch / Checkout命令切换到存储库(对应git.exe checkout master --
命令),它似乎也可以工作,但你肯定需要确保所有克隆的存储库都更新到以某种方式匹配远程版本,否则一旦你从它们推出它们就会破坏它。
由于我不够谨慎备份,这就是我所做的修复它:
在我的情况下,历史记录重复了两组相同的提交,从脚本操作的第一个提交开始。我在第一次复制之前复制了最后一次提交的SHA,然后执行git reset <sha>
跟随git push --force
。然后我确保删除所有现有克隆并再次克隆。
答案 1 :(得分:1)
使用GitHub的官方script,它就像魅力一样。我在原始仓库的克隆副本上使用了脚本,该副本有两个用户名。然后我做了一个强制git推。一切似乎都很好!