如何在第一个拉取请求尚未合并时从同一分支创建第二个拉取请求?

5
(在Github中) 假设我有两个分支,一个叫master,一个叫dev。 我在dev上工作,并提交了一个改动c1,然后创建了一个向master的Pull Request(PR1),这将修复bug1。 在PR1合并之前(有时我的团队需要很长时间来审核Pull Requests),我继续工作,修复了bug2,所以我提交了一个改动c2,然后创建了另一个Pull Request(PR2)。但我发现这个PR2包含了两个commit,分别是c1c2。这不是我的意图。 那么,在PR1合并之前,如何从dev分支创建一个只包含c2 commit的干净的PR2呢? 另外,我们团队有一个规则,即一个Pull Request只能修复一个bug。 对于我的糟糕英语非常抱歉,感谢您的帮助。
1个回答

4
假设您正在使用GitHub或Bitbucket,推送第二个提交应自动更新第一个拉取请求,因此通常您甚至不需要创建新的拉取请求。
如果出于某种原因,您需要将提交推入之前,那么这是另一回事了。
编辑:
如果您真的想要一个只包含的第二个拉取请求直接放在之上,那么一种方法是在从开始的新分支顶部挑选:
# from master
git checkout -b new_dev
git cherry-pick c2
git push origin new_dev

然后,从new_dev分支创建一个拉取请求并合并到master分支。


谢谢Tim,但如果我确实需要创建一个新的pull request怎么办?因为PR1中的c1提交将修复bug1,而PR2中的c2提交将修复bug2。我希望它们分别在不同的pull request中。 - androidmaster
我在我的更新答案中给了你一个完成这个操作的选项。 - Tim Biegeleisen
谢谢Tim。这个方法可行。但是你能教我有没有不改变拉取请求“compare”分支名称(保持名称为“dev”)的方法吗? - androidmaster
我不知道。要么提交“c1”是分支历史的一部分,要么就不是。 - Tim Biegeleisen

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