Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由于添加错误的远程回购而删除Git历史记录_Git - Fatal编程技术网

由于添加错误的远程回购而删除Git历史记录

由于添加错误的远程回购而删除Git历史记录,git,Git,如果可能的话,寻找Git方面的帮助。我是Git的新手,正在努力学习,所以请容忍我;) 长话短说,我在两台不同的服务器上设置了两个远程存储库。我有一个设置很好,但当添加第二个时,我意外地添加了一个现有项目的回购 然后,我从这第二次错误的回购中收回了所有的承诺。我删除了这个不正确的远程回购,但提交仍然存在于树中:-S顶部有我所有的真正提交,然后是中断,然后是所有不正确的提交 我是否可以从提交历史记录中删除所有这些提交,因为我希望保持我的树尽可能干净 在此方面如有任何帮助,将不胜感激 提前感谢在错误的

如果可能的话,寻找Git方面的帮助。我是Git的新手,正在努力学习,所以请容忍我;)

长话短说,我在两台不同的服务器上设置了两个远程存储库。我有一个设置很好,但当添加第二个时,我意外地添加了一个现有项目的回购

然后,我从这第二次错误的回购中收回了所有的承诺。我删除了这个不正确的远程回购,但提交仍然存在于树中:-S顶部有我所有的真正提交,然后是中断,然后是所有不正确的提交

我是否可以从提交历史记录中删除所有这些提交,因为我希望保持我的树尽可能干净

在此方面如有任何帮助,将不胜感激

提前感谢

在错误的pull之前,git会重置--hard到commit吗?如果
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
仍然显示来自不相关分支的不需要的提交。让我们要求行动吧?谢谢你的否决票。这以什么方式不能回答这个问题?您能显示哪个命令的哪个输出显示错误的提交吗?你做了些什么似乎还不清楚。正如您所料,这对您应该如何修复它有相当大的影响