我的前叉是origin
,我叉的是upstream
我必须从我的fork中删除一个提交,但我想更新upstream
repo,以防其他人需要分叉它(目前它只是我)。
到目前为止,我已完成以下工作:
git checkout MYBRANCH
git reset --hard <SHA_COMMIT_HASH>
git push origin MYBRANCH
到目前为止,我的upstream
回购邮件受到保护(它会在某个时候),所以我试图推送到那个回购邮箱,但我得到了以下消息。我试着强迫它,但它也没有用。我进行了双重检查,分支没有受到保护。
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.
答案 0 :(得分:1)
您已经重置了提交。您可以继续使用2种方法
git push origin --force-with-lease MYBRANCH
。这将覆盖提交并将其从远程删除,但如果远程仓库自上次提取后已更新,则会被拒绝。在你的情况下(你的分支,只有你承诺回购)这在技术上是不必要的,但这是一个很好的习惯。 在删除提交时,我通常会遵循以下规则
删除提交可以通过两种方式完成
如果您正在使用本地分支而不与其他开发人员协作,请使用 RESET 。由于重置会破坏提交,因此您的重置提交可能在其他开发人员的存储库中可用,并且他可能会意外地再次推送它。
如果您正在使用协作分支,请使用 REVERT 。在这种情况下,将添加新的还原提交。因此,即使某人有提交,revert也会覆盖它。
遵守这些规则将防止将来删除提交相关的任何问题。