由于添加错误的远程回购而删除Git历史记录
如果可能的话,寻找Git方面的帮助。我是Git的新手,正在努力学习,所以请容忍我;) 长话短说,我在两台不同的服务器上设置了两个远程存储库。我有一个设置很好,但当添加第二个时,我意外地添加了一个现有项目的回购 然后,我从这第二次错误的回购中收回了所有的承诺。我删除了这个不正确的远程回购,但提交仍然存在于树中:-S顶部有我所有的真正提交,然后是中断,然后是所有不正确的提交 我是否可以从提交历史记录中删除所有这些提交,因为我希望保持我的树尽可能干净 在此方面如有任何帮助,将不胜感激 提前感谢在错误的pull之前,git会重置--hard到commit吗?如果由于添加错误的远程回购而删除Git历史记录,git,Git,如果可能的话,寻找Git方面的帮助。我是Git的新手,正在努力学习,所以请容忍我;) 长话短说,我在两台不同的服务器上设置了两个远程存储库。我有一个设置很好,但当添加第二个时,我意外地添加了一个现有项目的回购 然后,我从这第二次错误的回购中收回了所有的承诺。我删除了这个不正确的远程回购,但提交仍然存在于树中:-S顶部有我所有的真正提交,然后是中断,然后是所有不正确的提交 我是否可以从提交历史记录中删除所有这些提交,因为我希望保持我的树尽可能干净 在此方面如有任何帮助,将不胜感激 提前感谢在错误的
hash1
是“中断”之前的提交,则可以执行git重置--hard hash1
如果top是指您的提交在这些错误提交之后,或者如果这些提交散布在您的历史记录中,我建议git-rebase-I
并从错误拉取中删除这些提交。您只需执行
git gc
卸下遥控器后
如果有任何局部参照指向错误的分支,请先删除它们
另外,请注意,为了安全起见,在重登录和悬挂提交时保留引用。这些服务通常会在适当的时候过期,但如果您愿意,您可以加速:
git gc --aggressive --prune=tomorrow
仅当您确信不需要恢复意外删除的任何内容时才执行此操作据我所知,您需要执行以下操作:
git rebase -i HEAD~5
这将打开一个文本编辑器,显示最后五次提交。只需从列表中删除不需要的内容并保存即可。git将更新索引,删除您不想要的提交。首先,使用git branch-d branchname(如果它抱怨没有将其合并到master中,则可能使用
-d
),删除您可能已从错误远程签出的任何本地分支
接下来,在您删除远程服务器之后,您需要使用git fetch--prune从repo中删除远程分支
最后,您可以使用git gc
删除遗留下来的孤立对象引用。-1-我认为OP不是在谈论垃圾收集。这是关于被拉入的分支中的提交。@manojlds:您似乎假设他以某种方式设法将其合并到一个不相关的分支中。这将是一件非常困难的事情。也许你是对的。一、 对我来说,我假设git log--all
仍然显示来自不相关分支的不需要的提交。让我们要求行动吧?谢谢你的否决票。这以什么方式不能回答这个问题?您能显示哪个命令的哪个输出显示错误的提交吗?你做了些什么似乎还不清楚。正如您所料,这对您应该如何修复它有相当大的影响