如何从GIT源中删除提交?

如何从GIT源中删除提交?,git,github,Git,Github,我的一个git存储库有两个遥控器 1. origin 2. new-origin 我总是将我的提交推送到新原点远程。但是今天我不小心把我的提交推到了源远程。那么有没有办法从源站远程恢复这些提交 我已经搜索并尝试了很多方法,但我只找到了删除推送提交的方法。我担心如果我通过git reset删除这些提交,它也可能会影响我的新来源。假设您的历史记录如下: 22222 new commit pushed accidentally to new-origin 11111 last commit that

我的一个git存储库有两个遥控器

1. origin
2. new-origin
我总是将我的提交推送到
新原点
远程。但是今天我不小心把我的提交推到了
远程。那么有没有办法从
源站
远程恢复这些提交


我已经搜索并尝试了很多方法,但我只找到了删除推送提交的方法。我担心如果我通过git reset删除这些提交,它也可能会影响我的
新来源。

假设您的历史记录如下:

22222 new commit pushed accidentally to new-origin
11111 last commit that should have been on new-origin
00000 older commits
然后你可以:

git push --force new-origin 111111:<branchname>
git推送——强制新原点111111:

注意:
--force
是一个危险的选项:您正在从新来源删除提交。。。如果您不注意,工作可能会丢失

正如我在评论中提到的,首先将提交推送到新的源站,这样新的源站存储库将得到更新,然后通过

git reset head~<no of commits here start from 0> --hard
git复位头~--硬
重置后,您的头部将处于所需的提交位置。然后把它推到原点。您需要强制推送它:

git push origin <branch-name> --force
git推送原点--force
现在,您的源repo将处于所需的提交状态,然后您可以通过从新的源中提取来更新本地存储库:

git pull new-origin <branch-name>
git拉新原点

您是否也已推送到新的源站,如果未推送到新的源站,则使用git reset hard从本地存储库中删除提交,然后推送到源站(您需要强制推送)可能重复的