我正在与一个团队合作,我们正在进行功能分支和拉取请求。
我创建了一个分支,对它做了一些工作,同时也对master做了很少的工作。
然后,我将分支重新对抗主人。现在我想做一个拉取请求。
但是,在GitHub中,pull请求显示了我第一次创建分支和现在之间发生的所有提交 - 我在此功能分支上执行的提交,以及在两者之间发生的提交。
这是嘈杂的混乱 - 我做错了什么?我希望pull请求只显示我所做的提交,因为其他提交已经在master和我的分支上,没有区别。
我看到的唯一建议是根据最新的上游主人和樱桃采摘提交另一个分支到我的分支机构。
答案 0 :(得分:12)
我曾经遇到过同样的问题:
如果我们有foo
分支,从master
分支,已经被推送到origin
,并且在两个分支上都进行了更改,那么在合并/重新定位后我得到了更改Pull Request的差异中的master
我首先执行git fetch
,更新我的本地master
分支,将本地分支更改为foo
然后执行命令来解决它:
git rebase master
git push -f origin foo:foo
这是强制远程分支,然后PR的差异只包含适当的更改,就像根据最近的master
创建分支一样。
答案 1 :(得分:4)
你一定做错了。作为rebase的结果,你应该只有master中最后一次提交后的唯一修订,你的分支应该为快进做好准备。
我现在做了一个快速测试,当然,拉取请求只显示了预期的唯一修订版。应该没有嘈杂的杂乱,也不需要樱桃挑选。你的分支似乎有问题。
再次尝试改造。如果您之前正确地重新定位,那么现在应该是NO-OP。检查你的分支,然后尝试在master之上再次进行rebase,如下所示:
git checkout yourbranch
git rebase master
这应该打印Current branch will-have-rebased is up to date.
,并且在将分支推送到GitHub之后,您应该能够创建一个只显示唯一提交的拉取请求。我不明白为什么不。
重要提示:请注意,如果您在重新定位之前推送了分支,那么Git将在重新定位后拒绝再次推送。这是因为一般情况下你不应该重写公共分支的历史,所有关于变基的指南都解释了这一点。如果你想推送分支,在github上重写它的历史记录,添加--force
标志。
答案 2 :(得分:1)
对我来说,关闭PR并在同一分支中打开一个新PR可以解决问题。