Git:删除origin和upstream repo中的提交

我的叉子是原点,我叉子的上游是

我必须从我的fork中删除一个提交,但我想更新上游repo,以防其他人需要分叉它(目前只是我).

到目前为止,我已经完成了以下工作:

git checkout MYBRANCH
git reset --hard <SHA_COMMIT_HASH>
git push origin MYBRANCH

截至目前,我的上游回购受到保护(它将在某些时候),所以我试图推送到那个回购但我收到了以下消息.我试过强迫它但它也没用.我进行了双重检查,分支没有受到保护.

hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

最佳答案 您已经重置了提交.您可以继续2种方法

>强制租赁Push – git push origin –force-with-lease MYBRANCH.这将覆盖提交并将其从远程删除,但如果远程仓库自上次提取后已更新,则会被拒绝.在你的情况下(你的分支,只有你承诺回购)这在技术上是不必要的,但这是一个很好的习惯.
>从MYBRANCH创建一个新分支.推送到远程并将其合并到MYBRANCH上游.

在删除提交时,我通常遵循下面提到的规则

删除提交可以通过两种方式完成

> git reset – destroys commit使远程分支和本地分支不同步
> git revert – 创建一个新的恢复提交,可以轻松推送到远程存储库

如果您正在使用本地分支而不与其他开发人员协作,请使用RESET.由于Reset会破坏提交,因此您的重置提交可能在其他开发人员的存储库中可用,并且他可能会意外地再次推送它.

如果您正在使用协作分支,请使用REVERT.在这种情况下,将添加新的还原提交.因此,即使某人有提交,revert也会覆盖它.

遵守这些规则将防止将来删除提交相关的任何问题.

点赞