2017-01-30 2 views
3

私は同じような質問が何度も聞かれているのを見ていますが、私はまだ理解していません。githubで1回のコミットのプルリクエストを作成

私は2つの支店を持つGitHubのレポ持っている:私の開発ブランチです

  1. masterと私は唯一までバグの固定具をプッシュする
  2. stableすべての最新の変更と新機能をプッシュすると新しい機能がテストされました。

私は4つのコミットを行い、masterにプッシュしました。最初の3つのコミットは新機能であり、最後のコミットはバグ修正です。

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] 

のは、我々は(5a6057の上に)マスターするb886a0をコピーしたいとしましょうを考えます。

私たちは、あなたが選択的に別のブランチからコミットを取りたい

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を実行しますが、同じブランチで機能の開発とバグの修正を混在させる場合、あなたは自分の状況に合っていなければならず、新しい機能のコミットを慎重に無視してバグ修正をコミットする必要があります。

関連する問題