拉取请求已合并,关闭,然后回退 - 现在无法再次拉取该分支

7

一些操作后,GitHub看起来有点迷失 - 而我肯定也是...

以下是故事的经过:
我是git和github的新手。在我的存储库中,我有一个分支(让我们称其为B),在这个分支上我正在开发一个功能。

  1. 为了使事情更透明,我创建了一个拉取请求。
  2. 我的合作者(完全不懂git/github)点击合并了拉取请求(可能只是探索界面)。
  3. 由于该功能还没有准备好,因此我撤消了合并。

现在,我想继续在分支B上工作,稍后将其合并,但尽管分支已经相差800多行,GitHub仍然显示只有一行差异(一个提交)。

这可能是因为我试图在撤销更改后重新打开旧的拉取请求。我确实重新打开了拉取请求,但合并选项不再可用。我尝试关闭或打开旧的拉取请求并创建一个新的拉取请求(将分支B拉到master),但这只显示了一个提交,就好像所有其他内容都被原始拉取请求(虽然已经撤销)吃掉了。但如果我尝试从masterB拉取,它会显示所有的差异(大约+800/-300的差异)。

我希望能够平静地在分支B上工作 - 我希望回到B可以自动合并的时刻(现在不可能,因为新的拉取请求只显示Bmaster之间的一点小差异,而实际上的差异是不同的)。最简单的方法是什么?

3个回答

7

如果您不想折腾分支B,您可以:

  • 创建一个新的分支C,
  • 从先前容易合并的提交处开始,
  • C中挑选需要的任何提交。

然后,如果您想要,可以从C创建PR。


我知道这是可能的,但是我的git知识非常基础——主要只了解push、add、commit和checkout。因此,我不知道如何从以前的提交或cherry-pick开始。你能指导我相关的资源吗?对于我的基础知识表示抱歉——如果我知道得更多,我可能就不会有这个问题了 :) - mmagnuski
好的,谢谢,我会尝试这个然后再进行挑选。我很快会接受你的答案 :) - mmagnuski
@Impon_de_Rable 最好先测试一下,如果可行再接受它 ;) - VonC
这正是我所指的。 - mmagnuski
@Impon_de_Rable 太好了!我已经写了更多的PR:https://dev59.com/questions/FGUq5IYBdhLWcg3wN94t#14681796 - VonC
显示剩余3条评论

2

我认为最干净的解决方案是从主分支创建一个新的分支,然后撤销撤销您的PR的提交。类似于:

git checkout master
git checkout -b retry_B  # create new branch
git log  # find commit hash for the revert
git revert <hash_from_revert>

你可以直接在GitHub上进行操作,从而撤销你已经撤销的提交。 - Jay Modi

1
我知道这是一个旧问题,但我刚遇到了同样的问题,并找到了一个简单的解决方法:
我刚从主分支创建了一个新分支,并用之前工作的分支中的内容替换了项目文件夹的内容(字面上复制和粘贴文件夹内容)。之后,运行git status时,它显示了正确的修改。
这是一个更为原始的解决方案,但它能够起作用。之后,我能够创建PR,展示了来自主分支和我正在工作的分支的正确更改。

没错,那应该可以,但这样你就失去了提交历史记录 - 而且挑选也不难。 :) - mmagnuski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接