Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.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,我有一个带有主软件的主存储库[a]。我创建了一个克隆(将模块添加到该软件中,不针对任何其他使用[a]的人),并将其复制到另一个使用[a]更新的存储库[B]。因此[B]在从[A]开始的过程中有多个拉入和合并 最近,我决定在[A]的代码库中对[B]中的一些问题进行错误修复(37173bc),并希望将这一次提交推回到[A]。我以为它只会推送一个提交,但我不小心推送了从[B]到[A]的所有内容 更糟糕的是,一开始我没有注意到[A]中的问题,我只是注意到根解决方案文件被重命名,并决定在[A]中重新命名它,

我有一个带有主软件的主存储库[a]。我创建了一个克隆(将模块添加到该软件中,不针对任何其他使用[a]的人),并将其复制到另一个使用[a]更新的存储库[B]。因此[B]在从[A]开始的过程中有多个拉入和合并

最近,我决定在[A]的代码库中对[B]中的一些问题进行错误修复(37173bc),并希望将这一次提交推回到[A]。我以为它只会推送一个提交,但我不小心推送了从[B]到[A]的所有内容

更糟糕的是,一开始我没有注意到[A]中的问题,我只是注意到根解决方案文件被重命名,并决定在[A]中重新命名它,并提交该修复(579dcb6)-同时将该修复拖回[B]

在这一点上,我注意到我真的搞砸了回购协议:)。我想将最后几次提交回复到[A],但是

从[B]到[A]的一次错误合并/推送/提交实际上是[A]中现在的许多提交,我不能只是还原/重置头~5,而是以某种方式摆脱了[B]中现在出现在[A]中的所有其他提交

最多5b7760d(蓝线)所有青色提交到[A]的位置。从那时起,[A]内的所有进展突然显示在紫色线上

所以我想从[A]中删除5b7760d之后的所有青色提交,有效地消除[A]中任何[B]的所有跟踪。因为我是唯一一个使用回购协议的人,所以我可以在交易结束后再做一次调整

任何帮助都将不胜感激


我刚到家,幸运的是在[B]合并之前,我有了[a]的一个版本。所以我想我应该尝试一下
git push-f origin master
,它似乎已经恢复了repo[A]中[B]的所有更改!!是 啊我得看看这对明天在办公室的工作意味着什么,但至少A又干净了!所以,我们学到了什么?有时候,在尝试新的回购协议之前,保存一份本地回购协议的副本是一个好主意:)

<可能值得一看,因为您的手上似乎确实有点乱,最好还是顺其自然,从您现在的位置进行修复。问题是-如果我从[A] 在下一次拉取时,它们也会在[B]处被删除。我如何避免这种情况?你是说这是未提交的?你在上游合并的分支中有没有分支?不幸的是,[A]和[B]目前都是相同的(但不应该是相同的),并且都是提交给上游/原始的。因此,我在本地没有未提交的更改回购根本不关心我的最后一个操作,所以我的上述解决方案非常有效!如果有办法从[a]中提取一个类似于我在家中的版本,并执行我上面所做的操作,我会很感兴趣