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

时间:2018-04-13 12:23:49

标签: git

我的前叉是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.

1 个答案:

答案 0 :(得分:1)

您已经重置了提交。您可以继续使用2种方法

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

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

    1. git reset - 销毁提交使您的远程分支和本地分支不同步
    2. git revert - 创建一个可以轻松推送到远程存储库的新还原提交
    3. 如果您正在使用本地分支而不与其他开发人员协作,请使用 RESET 。由于重置会破坏提交,因此您的重置提交可能在其他开发人员的存储库中可用,并且他可能会意外地再次推送它。

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

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