15

我正在与一个团队合作,我们正在做功能分支和拉取请求。

我创建了一个分支,在它上面做了一些工作,同时也在 master 上做了一点工作。

然后,我针对 master 重新设置了分支。现在我想做一个拉取请求。

然而,在 GitHub 中,拉取请求显示了从我第一次创建分支到现在之间发生的所有提交——我在这个特性分支上所做的提交,以及在这两者之间发生的 master 上的提交。

这是嘈杂的混乱 - 我做错了吗?我希望拉取请求只显示我所做的提交,因为其他提交已经在 master 和我的分支上,没有区别。

我看到的唯一建议是根据最新的上游 master 和从我的分支到它的樱桃采摘提交创建另一个分支。

4

3 回答 3

14

我曾经有同样的问题:

如果我们有foo分支,从 分支master,它已经被推入origin,并且在两个分支上都进行了更改,那么在合并/变基之后,我正在从master拉取请求的差异中获取更改。

我通过git fetch首先执行,更新我的本地master分支,将本地分支更改为foo然后执行命令来解决它:

git rebase master

git push -f origin foo:foo

这会强制远程分支,然后 PR 的 diff 只包含适当的更改,就像基于最近创建的分支一样master

于 2015-06-23T09:09:50.163 回答
4

你一定做错了什么。作为 rebase 的结果,您应该只有在 master 中最后一次提交之后的唯一修订,并且您的分支应该准备好进行快进。

我现在做了一个快速测试,当然,拉取请求只显示预期的唯一修订。不应该有嘈杂的杂物,也不需要樱桃采摘。您的分支似乎有问题。

尝试再次变基。如果您之前正确地重新设置基准,那么现在这应该是一个 NO-OP。签出您的分支,并尝试在 master 之上再次变基,如下所示:

git checkout yourbranch
git rebase master

这应该打印Current branch will-have-rebased is up to date.,并且在将分支推送到 GitHub 之后,您应该能够创建一个仅显示唯一提交的拉取请求。我不明白为什么不。

重要提示:请记住,如果您在变基之前推送了您的分支,那么 Git 将在变基拒绝再次推送。这是因为通常你不应该重写公共分支的历史,所有关于变基的指南都解释了这一点。如果你仍然想推送分支,在 github 上重写它的历史,添加--force标志。

于 2013-08-19T22:32:20.613 回答
1

对我来说,关闭 PR 并打开一个具有相同分支的新 PR 就可以了。

于 2018-11-29T16:15:32.267 回答