2017-01-30 133 views
3

我发现类似的问题已经被多次提出,但我仍然不明白,我需要一个实际的例子来说明我的情况。在github上创建单个提交的拉取请求

我有两个分支的GitHub库:

  1. master这是我的开发分支,在这里我要推,我想推的错误定价只有等到所有的最新变化,新特点
  2. stable新功能已经过测试。

现在我已经做了4次提交并将它们推送到master。前三个提交是新功能,上次提交是bug修复。

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

现在我想上次提交只有被推送到稳定的分支。我如何实现这一目标?

回答

4

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

$ 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 
+0

谢谢!现在我终于明白了! :) – lviggiani

1

解决方案:

您可以使用git樱桃挑选应用本身就是一个单一提交到当前分支。

git checkout stable 
git cherry-pick <last_commit_id> 

背景:

git的樱桃挑选适用于所做的更改现有承诺的另一个分支,同时记录一个新的提交。实质上,您可以将提交从分支复制到分支。

考虑下面的树

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

比方说,我们要b886a0复制到主(对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] 
0

你需要有选择性的采取提交了另一个分支所以这听起来完全像什么摘樱桃是应该做的。只要结帐稳定,并做git cherry-pick <commit hash>

至于你为什么,你可能想读git工作流程,特别是一个名为gitflow。在我看来,您需要一个像功能一样的分支来修复错误,并将其合并回“稳定”主线。在这里你只是做一个gitmerge,而当你在同一个分支中混合功能开发和bug修复时,你会遇到你必须仔细挑选并仔细忽略提交新功能才能进入你想要的bug修复提交的情况。

相关问题