GitHub - 如何在多次提交的情况下提交单个拉取请求

时间:2013-06-07 12:28:17

标签: github

我已经对我的本地存储库进行了多次提交,现在我打算执行pull请求将这些更改提交给源/ master。

当我执行拉取请求时,它会自动包含我的所有提交。我找不到在自己的pull请求中提交每个提交的方法。有人可以给一些关于如何在GitHub上执行此操作的指针。

更新 为了澄清这个问题,我从上游/主人那里分发了一个新的本地仓库。然后,在我的noobie-ness中,我在我的本地主人本身中创建了新文件而没有首先分支回购。所以,实际上,我的问题是将这些更改提交给本地主仓库,是否有办法逐个提取每个新文件的拉取请求,而不是一次性提取所有这些请求。

非常感谢。

2 个答案:

答案 0 :(得分:20)

我不确定GitHub中是否有更好的方法,但总的来说,你可以为每个拉取请求创建一个新的分支,挑选你想要的每个请求的提交。 新的分支机构最好应该基于上游主机,以使合并无痛。

使用命令行git,使用origin作为您自己的github远程仓库,upstream是上游远程:

git checkout -b {my_pull_request_feature_branch} upstream/master
git cherry-pick {sha1_of_first_commit_for_feature_X} [sha1_of_another_commit_for_feature_X] ...
git push origin {my_pull_request_feature_branch}

对每个拉取请求重复。

当您在GitHub上执行拉取请求时,您可以选择要在请求中发送的分支。

答案 1 :(得分:6)

提交不是独立的,它始终链接到完整的先前历史记录。因此,如果你要求提交B取决于你的提交A,那么你也要求拉A,因为你在B中的工作取决于它。

如果要提交多个独立的pull请求,则应确保这些提交完全相互独立。所以他们应该在自己的分支机构。这也使项目维护者更容易集成您的pull请求,因为他们可以合并分支而无需挑选内容。