在github上创建单个提交的pull请求

时间:2017-01-30 08:20:36

标签: git github

我看到类似的问题已被多次提出,但我仍然不明白,我需要一个实际的例子来说明我的情况。

我有一个有两个分支的github仓库:

  1. master这是我的开发分支,我想推送所有最新的更改和新功能
  2. stable我只想在修改新功能之前推送错误修复。
  3. 现在我做了4次提交并将它们推送到master。前三个提交是新功能,最后提交是一个错误修复。

    在github中,如果我选择stable分支,则表明它在master之后是4次提交(这是正确的)。

    现在我想将最后一次提交推送到稳定分支。我如何实现这一目标?

3 个答案:

答案 0 :(得分:4)

您可以在last-commit-hash分支中挑选stable并推送到远程。

$ git fetch
$ git log                               # copy the last-commit-hash 

$ git checkout -b stable origin/stable  # create local/stable branch from remote/stable
$ git cherry-pick <last-commit-hash>    # take the last-commit
$ git push origin HEAD                  # update remote/stable

答案 1 :(得分:1)

<强>解决方案:

您可以使用git cherry-pick将单个提交单独应用于当前分支。

git checkout stable
git cherry-pick <last_commit_id>

背景:

git cherry-pick会将现有提交中所做的更改应用于另一个分支,同时记录新提交。从本质上讲,您可以将提交从分支复制到分支。

给出以下树

dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]
           \
            76cada - 62ecb3 - b886a0 [feature]

假设我们想将b886a0复制到master(在5a6057之上)。

我们可以运行

git checkout master
git cherry-pick b886a0
Now our tree will look something like:

dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 - a66b23 [master]
           \
            76cada - 62ecb3 - b886a0 [feature]

答案 2 :(得分:0)

你想有选择地从另一个分支中提交提交,所以这听起来就像樱桃选择应该做的那样。只需结帐稳定并执行git cherry-pick <commit hash>

至于为什么,您可能想要阅读git工作流程,特别是名为gitflow的工作流程。在我看来,你需要一个类似分支的功能,你可以在其中修复错误,并且它可以合并回到稳定的&#34;主线。在这里你只是做一个gitmerge,而当你在同一个分支中混合功能开发和错误修复时,你会遇到这样的情况,你必须在这种情况下,并且要小心地忽略对新功能的提交以获得你想要的bug修复提交。