首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修正失败的过滤器-枝-树-过滤器后的git。

修正失败的过滤器-枝-树-过滤器后的git。
EN

Stack Overflow用户
提问于 2019-06-04 06:26:24
回答 1查看 80关注 0票数 1

所以我犯了个错误。我不得不意外地从git历史记录中删除了一个大二进制文件,并且我使用了git filter-branch --tree-filter命令来做到这一点。当这里有很多线程处于这样的状态时,如果其他人在执行过滤分支时提交到分支,那么它就是一个f.up,我错误地拉动了这些更改,合并了它们,然后推送到远程,而不是在不合并的情况下执行强制推进。这个错误导致我的整个存储库重复提交。

有没有办法摆脱那些被欺骗的犯罪。我们有超过10K提交,而那些被欺骗了,所以用手压他们,或做任何事情用手不是一个选择。

我在.git/refs/original/refs中也没有任何东西,我甚至没有这个文件夹。

我还能恢复这个回购吗,还是我们需要重新开始?

反映@ElpieKay的更新

我在commit上创建了git reset --hard,这是错误合并之前的提交。这解决了一些问题,但在我们正在进行的拉请求中,由于新引入的重复提交而引发了许多冲突。

因此,我创建了git push origin -f ad67a5z2z8:development,之后头部指向ad67a5z2z8提交,这是我发出filter分支命令之前的最后一次提交。之后,拉请求中的冲突就消失了,但是重复的提交仍然存在。无论如何我都不能移除。

EN

回答 1

Stack Overflow用户

发布于 2019-06-04 07:39:05

假设分支是master。运行git reflog master。在输出中,您应该能够从顶部找到一行,它指示mastergit pull之后的位置,在此模式中

代码语言:javascript
复制
b3c23d5 master@{n}: pull foo master: Merge made by the 'recursive' strategy.

然后紧跟在后面的另一行,它指示mastergit filter-branch之后的位置,在这个模式中

代码语言:javascript
复制
569a613 master@{n}: filter-branch: rewrite

上面一条线下面的一行表示哪个提交mastergit filter-branch之前。可能就像

代码语言:javascript
复制
123abcd master@{n}: foo bar baz

在存储库中,哈希应该是不同的。在这个例子中,569a613就是您应该强制执行的提交。您需要执行两个步骤来修复这个问题:

1)强制推送569a613更新远程存储库中的master

代码语言:javascript
复制
git push origin -f 569a613:master

2)找出其他人推动的额外提交,并将这些提交应用于新的master

代码语言:javascript
复制
git log --oneline 123abcd..b3c23d5^2

第二步中列出的提交可能不准确。与其他投稿人核实。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56438426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档