不幸的是,在使用 subversion 多年之后,我正在尝试使用 git 热身。问题如下:

  • 我 fork 了一个远程项目。
  • 将提交(现在我想恢复或干脆消失!)推送到我自己的 Remote 。
  • pull 请求了我在上述步骤中的更改。

  • 视觉上看起来像;

    原项目:
    A->B->C->D->E
    

    我自己的远程分支(x、y、z 是我对还原或删除的 promise ,如果可能的话):
    A->X->Y->Z->C->D->E
    

    我希望我的 fork Remote 与原始 Remote 一样。然而,在我尝试恢复(使用 git revert [HASH])之后,我的提交一一并将这些恢复推送到我自己的 Remote ,看来 pull 请求并没有消失。

    如果我找不到解决方案,最后一件事是删除我的 fork ,并重新 fork 原来的项目。

    在这样做之前有什么建议吗?

    最佳答案

    假设您在本地存储库中定义了这两个 Remote :

  • origin:指向原始 repo
  • remote2:指向你自己的个人fork

  • 并且您想强制从 origin/somebranch 更新到 remote2/otherbranch ,您可以这样做:
    # make sure you have up to date branch data locally
    git fetch origin
    git fetch remote2
    
    # force push to remote2 from origin
    git push remote2 origin/somebranch:otherbranch --force
    

    要将本地分支重置为与远程分支相同的状态:
    git reset --hard origin/somebranch
    

    关于git 恢复更改并取消 pull 请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21563845/

    10-14 03:01