Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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_Logging_Merge_Pull_Revert - Fatal编程技术网

撤消git拉动并将其';它对历史的影响。

撤消git拉动并将其';它对历史的影响。,git,logging,merge,pull,revert,Git,Logging,Merge,Pull,Revert,这是我悲伤的故事 今天我犯了一个错误,从另一个存储库拉到我的存储库中。我正在处理存储库A,我将存储库B的内容拉入A。我这样做是因为我想从该存储库中获取一些文件 之后,我将存储库推到远程 我的问题不是我的代码,因为这两个存储库是不同的。但问题在于历史 现在,我的远程存储库(公众可以看到)中包含了来自存储库B的所有提交历史记录,并在日志中混合了我的提交 如何从历史记录日志中删除这些提交 有没有办法将我的存储库重置为昨天的状态?这会导致历史记录中存储库B的提交消失吗 我试图重置合并,使用Re-base

这是我悲伤的故事

今天我犯了一个错误,从另一个存储库拉到我的存储库中。我正在处理存储库A,我将存储库B的内容拉入A。我这样做是因为我想从该存储库中获取一些文件

之后,我将存储库推到远程

我的问题不是我的代码,因为这两个存储库是不同的。但问题在于历史

现在,我的远程存储库(公众可以看到)中包含了来自存储库B的所有提交历史记录,并在日志中混合了我的提交

如何从历史记录日志中删除这些提交

有没有办法将我的存储库重置为昨天的状态?这会导致历史记录中存储库B的提交消失吗

我试图重置合并,使用Re-base和Cherry-pick,但两种情况下都没有删除历史记录


感谢您抽出时间

如果您知道昨天所有分支的位置,您可以查看并将它们重置为原始位置。对于每个相关分支机构:

git checkout <branch name>
git reset --hard <old hash>
git push -f <repository A> <branch name>
git签出
git重置——硬
git-push-f
然后,您可以删除任何不需要的新分支。对于每个此类分支机构:

git branch -D <branch name>
git push <repository A> :<branch name>
git分支-D
git推送:

但是,如果其他人可能同时从存储库A中提取,那么这一切都是非常粗略的。解决方案可能部分是社会性的,也可能是技术性的——可能需要告诉使用存储库的其他人发生了什么,以便他们可以修复本地克隆。

如果您知道昨天所有分支都在哪里,您可以查看并将每个分支重置到其原始位置。对于每个相关分支机构:

git checkout <branch name>
git reset --hard <old hash>
git push -f <repository A> <branch name>
git签出
git重置——硬
git-push-f
然后,您可以删除任何不需要的新分支。对于每个此类分支机构:

git branch -D <branch name>
git push <repository A> :<branch name>
git分支-D
git推送:

但是,如果其他人可能同时从存储库A中提取,那么这一切都是非常粗略的。解决方案可能部分是社交性的,也可能是技术性的——可能需要告诉其他使用存储库的人发生了什么,以便他们可以修复本地克隆。

git reflog
是您想要查看的地方。只要您有一段时间没有垃圾收集,您就应该能够执行
git重置--hard HEAD@{x}
,其中x是您希望将本地分支中的所有内容重置回的特定历史点

一旦你这么做了,我会做一个git push--force,让你的公共回购回到你想要的地方


不幸的是,如果其他人已经从您的遥控器中拔出,他们的历史记录将被弄乱。

git reflog
是您想要查看的地方。只要您有一段时间没有垃圾收集,您就应该能够执行
git重置--hard HEAD@{x}
,其中x是您希望将本地分支中的所有内容重置回的特定历史点

一旦你这么做了,我会做一个git push--force,让你的公共回购回到你想要的地方


不幸的是,如果其他人已经从您的遥控器中拔出,他们的历史将被打乱。

谢谢大家。我已经解决了我的问题。我根据不同的文章和问题设法解决了这个问题

我将在这里解释答案,以及我在斗争中学到的东西

首先,为了有选择地从历史记录中删除分散的提交,最好的方法可以在下面的答案中找到:

具体来说,答案是。最接近这个答案的是

注意:恢复提交不会将其从历史记录中删除,重置会将其从历史记录中删除

至于我的特殊情况,我认为对于我不想要的每一个提交,我都必须遵循前面的方法,但实际上答案更简单

在我的情况下,我必须在拉取存储库B之前将git重置为提交,并且必须对所有分支执行此操作。一旦这样做了,来自B的所有不希望的提交就从我的历史记录中消失了

另一件有趣的事情是,在许多提交中使用git Cherry Pick或Revert并不像在线文章中听起来那么直接,至少对我来说是这样


谢谢大家

谢谢大家。我已经解决了我的问题。我根据不同的文章和问题设法解决了这个问题

我将在这里解释答案,以及我在斗争中学到的东西

首先,为了有选择地从历史记录中删除分散的提交,最好的方法可以在下面的答案中找到:

具体来说,答案是。最接近这个答案的是

注意:恢复提交不会将其从历史记录中删除,重置会将其从历史记录中删除

至于我的特殊情况,我认为对于我不想要的每一个提交,我都必须遵循前面的方法,但实际上答案更简单

在我的情况下,我必须在拉取存储库B之前将git重置为提交,并且必须对所有分支执行此操作。一旦这样做了,来自B的所有不希望的提交就从我的历史记录中消失了

另一件有趣的事情是,在许多提交中使用git Cherry Pick或Revert并不像在线文章中听起来那么直接,至少对我来说是这样


谢谢大家

问题是来自Repo B的提交比我的提交早,并且现在与我的提交混合出现在我的历史记录中。问题是来自Repo B的提交比我的提交早,并且现在与我的提交混合出现在我的历史记录中。没有明确的指示,git在reflogs中保留了90天的历史记录,并且不会删减从那里可以到达的任何提交。如果没有明确的指示,git在reflogs中保留了90天的历史记录,并且不会删减从那里可以到达的任何提交。