在第二个请求中显示的一个请求请求中提交

时间:2018-07-25 03:19:38

标签: git github gitlab

我是GitHub的新手,但我遇到一个问题,即在随后的请求中显示了第一个请求请求所提交的提交。那就是:

拉取请求1(PR1)

我看到提交了:

  • pr1sha1
  • pr1sha2

拉取请求2(PR2)

我看到提交了:

  • pr1sha1
  • pr1sha2
  • pr2sha1

我不知道发生了什么事。

为什么PR1中的提交也出现在PR2中,我该如何解决?

1 个答案:

答案 0 :(得分:2)

这是因为您根本没有分支,或者您使用PR1分支作为PR2的起点。

一个选择就是简单地关闭PR1并合并PR2,或者先合并PR1然后再合并PR2。这些选项都可以。在下面的内容中,我假设由于某种原因您无法执行此操作,因此您需要将它们合并为两个单独的PR。

要解决此问题,您需要交互式地基于PR2分支,然后“删除”不需要的提交。

我假设您在pr2branch分支上。

git rebase -i HEAD~~~~ 

出现一个屏幕,其中包含以下列表的提交:

pick pr2sha1 Commit message pr2sha1
pick pr1sha2 Commit message pr1sha2
pick pr1sha1 Commit message pr1sha1
pick 4dced1f Commit message 

您还应该在注释下方看到说明。您应该阅读这些说明。

无论如何,由于您要“删除”与PR1相关的提交,因此请将文本更改为:

pick pr2sha1 Commit message pr2sha1
drop pr1sha2 Commit message pr1sha2
drop pr1sha1 Commit message pr1sha1
pick 4dced1f Commit message 

然后保存该文件,然后更新PR:

git push origin pr2branch --force

有关交互式变基的更多信息,请参见here

为避免下次发生这种情况,请在推动提高PR之前始终执行以下步骤。

(如果主分支称为master,而第二个PR的新分支是new-pr-branch。)

git checkout master
git pull
git checkout -b new-pr-branch

(尽管有些人建议不要使用git pull,例如here。)