Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Github Revert按钮恢复PR后再次进行PR和合并_Git_Github_Merge_Revert - Fatal编程技术网

如何使用Github Revert按钮恢复PR后再次进行PR和合并

如何使用Github Revert按钮恢复PR后再次进行PR和合并,git,github,merge,revert,Git,Github,Merge,Revert,基本上,我曾经将功能分支的上一个PR还原为主,然后我决定合并我先前还原的功能分支,但我无法这样做。步骤如下: PR将功能分支合并到主分支 从(master)还原PR合并 尝试创建新PR以再次将功能分支合并到master 收到这个消息: 没有什么可比的 master是来自feature branch的所有提交的最新版本。尝试切换基数以进行比较 关于如何将功能分支再次合并到主功能中的任何建议,只需还原还原即可。因此,通过单击revert按钮,您将创建一个新的PR(步骤2)。合并后,您可以选择将其还原

基本上,我曾经将功能分支的上一个PR还原为
,然后我决定合并我先前还原的功能分支,但我无法这样做。步骤如下:

  • PR将功能分支合并到
    主分支
  • 从(
    master
    )还原PR合并
  • 尝试创建新PR以再次将功能分支合并到
    master
  • 收到这个消息:
  • 没有什么可比的

    master是来自feature branch的所有提交的最新版本。尝试切换基数以进行比较


    关于如何将功能分支再次合并到
    主功能

    中的任何建议,只需还原还原即可。因此,通过单击revert按钮,您将创建一个新的PR(步骤2)。合并后,您可以选择将其还原,这将创建一个新分支,并将所有更改返回。然后,您可以拉取该文件,对其进行更改(如果需要)并创建新的PR。您将丢失Github上的所有提交消息,但所有文件更改仍然存在。很高兴参考您原来的分支机构并在新的PR中恢复

    任何可以避免复杂的重基或强制推送到master的操作。

    什么 您应该拉取最近的主节点,在主节点上重新设置分支的基础,然后您应该能够提出另一个拉取请求


    为什么? 无法自动合并回的原因是分支的基础与主分支的头不同步

    还原还原可能会变得混乱,有时会缺乏透明度

    此外,还原还原将阻止使用此代码的其他分支正确合并


    假设在主节点上有特征x,并合并到分支y中。然后,您决定master不应该合并特性x,因为它取决于分支y。所以,你回到主人的身上。当您尝试合并分支x时,git merge命令会看到原始的合并,并愉快地宣布一切正常,分支已经合并,忽略了功能x的这些提交,尽管您希望它们与分支y合并。

    我知道这很旧,但如果有人需要一个好的答案,请点击此处:

    合并PR并删除分支,然后还原此合并后,可以创建新分支,然后还原还原。将此推送到远程回购并创建新的请购单

    这将创建一个新的PR,其中一个提交名为“revert”revert#123 blabla”`并包含您在diff上的所有更改


    我写这个答案是因为我面对这个问题,我发现这里的答案更多的是理论性的,而不是实践性的。我上网多了一点,找到了解决这个问题的方法。你可以在这篇文章中找到更详细的答案

    要解决此问题,您必须创建一个跟踪主节点的新分支,并还原还原提交。然后签出到要素分支并合并新分支。现在您可以解决冲突(如果有),提交并创建新的PR

    以下是命令:

    # do the needed changes in the feature branch
    $ git commit -m "fixed issues in feature-branch'
    
    # create new branch tracking master branch
    $ git checkout -b revert-the-revert-branch -t master
    
    # revert the reversion commit
    # find it from your git log
    # in linux try: 'git log | grep revert -A 5 -B 5'
    $ git revert <revert-commit-hash>
    
    # checkout the original feature branch
    $ git checkout feature-branch
    
    # merge the revert branch
    $ git merge revert-the-revert-branch
    
    # handle merge conflicts and commit and PR
    
    #在功能分支中进行所需的更改
    $git commit-m“修复了功能分支中的问题”
    #创建新的分支跟踪主分支
    $git checkout-b还原还原分支-t master
    #恢复恢复提交
    #从git日志中找到它
    #在linux中尝试:“git log | grep revert-A 5-B 5”
    $git还原
    #签出原始要素分支
    $git签出功能分支
    #合并还原分支
    $git merge还原还原分支
    #处理合并冲突、提交和PR
    
  • 转到恢复PR并单击“恢复”(但不要合并)
  • Do
    git fetch

  • Do
    git checkout除了基本情况外,这个答案在所有情况下都是不够的,因为您必须找到旧的分支并将所有内容复制到文本编辑器中以创建新的分支。Anthony的解决方案更加透明,唯一的混乱是自动生成的github名称,您可以修改自己。为什么要这样做要将任何内容复制到文本编辑器中?Pull master,切换到您的分支(其名称在PR中,这样您就不必“查找”任何内容),Pull branch,
    git rebase master
    ,force push branch.Done.a)rebase是一个有用的工具,不要避免,因为它很复杂。B)还原有一些警告(请参阅我的回复)如果要清理丑陋的分支名称
    revert-123-revert-123..
    或类似名称,可以使用
    git branch-m
    重命名该分支,然后按提交-
    git push origin-u
    ,然后删除丑陋的分支名称
    git push origin--delete revert-123-revert-123
    。有关@Aboodred1的更多信息,请标记此项作为答案,因为大多数人认为这是一个有用和实用的答案。