添加错误的远程仓库导致删除Git历史记录

时间:2011-05-20 15:39:42

标签: git

如果可能的话,寻求Git的一些帮助。我是Git的新手,并试图学习如此忍受我;)

简而言之,我在两台不同的服务器上设置了两个远程存储库。我有一个设置正常,但在添加第二个时,我不小心添加了现有项目的回购。

然后我从第二个错误的仓库中取出并获得所有提交。我删除了这个不正确的远程仓库但是提交仍然存在于树中:-S我的所有真正的提交都在顶部,然后休息,然后是所有不正确的。

无论如何我可以从我的提交历史中删除所有这些提交,因为我希望尽可能保持我的树干净吗?

任何帮助都会受到赞赏。

提前致谢

4 个答案:

答案 0 :(得分:1)

在错误拉动之前,git reset --hard会提交吗?如果{“1}}是”休息“之前的提交,则可以执行hash1

如果在顶部你的意思是你的提交是在这些错误的提交之后,或者如果这些提交散布在你的历史记录中,我会建议git reset --hard hash1并从错误的提取中删除提交。

答案 1 :(得分:0)

据我了解,你需要做这样的事情:

git rebase -i HEAD~5

这将显示一个文本编辑器,显示最近五次提交。只需从列表中删除您不想要的那些并保存即可。 git将更新索引,删除你不想要的提交。

答案 2 :(得分:0)

首先,删除您可能已使用git branch -d branchname从错误的远程检出的所有本地分支(如果它抱怨它未被合并为主,则可能使用-D,但请谨慎使用)。

接下来,在您移除了遥控器之后,您需要使用git fetch --prune从您的存储库移除远程分支。

最后,您可以使用git gc删除遗留下来的孤立对象引用。

答案 3 :(得分:-1)

你只需要做一个

git gc
删除遥控器后

如果您有任何本地引用指向错误的分支,请先删除它们。

另请注意,引用是为了安全保存在reflogs和悬挂提交中。这些通常会在适当的时候到期,但如果您愿意,可以加快速度:

git gc --aggressive --prune=tomorrow

只有在您确定不需要恢复意外删除的任何内容时才执行此操作