【问题标题】:Pull request on github - showing commits rebased from mastergithub 上的拉取请求 - 显示从 master 重新设置的提交
【发布时间】:2013-08-19 21:45:15
【问题描述】:

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

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

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

但是,在 GitHub 中,拉取请求会显示从我第一次创建分支到现在之间发生的所有提交 - 我在此功能分支上所做的提交,以及在这期间发生的 master 上的提交。

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

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

【问题讨论】:

    标签: git github


    【解决方案1】:

    我以前也有同样的问题:

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

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

    git rebase master

    git push -f origin foo:foo

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

    【讨论】:

    • 我得到“一切都是最新的”,没有任何变化
    • 你是先从origin/master拉的吗?将foo 推送到远程时是否使用过武力?
    • 我想我忘了强制推送,我通过将我的 PR 上的“base”分支更改为除 master 之外的任何分支然后将其更改回来解决了这个问题
    【解决方案2】:

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

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

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

    git checkout yourbranch
    git rebase master
    

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

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

    【讨论】:

    • 这确实按规定工作,但是我无法推送分支。答案是因为我之前已经推送过一次了。
    • @HsiuDai 你不能再push是因为没有东西可以push,还是因为Git拒绝重写分支的历史?您可以发布您的仓库的 URL 和分支的名称吗?
    • 私人回购恐怕不能发。但这是因为 git 拒绝重写历史,因为在 rebase 之后,SHA 现在都不同了。
    • @HsiuDai 您可以使用--force 推回,请参阅我添加到答案中的最后一段。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2013-06-23
      • 2016-12-27
      • 2011-05-05
      • 2013-06-15
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      相关资源
      最近更新 更多