2017-01-23 12 views

答えて

2

まず、branchAcherry-pickに移動し、ここで選択したい2つのコミットを行ってください。

$ git checkout branchA 
$ git cherry-pick <commit1>  # commit1 = 0a18e0f 
$ git cherry-pick <commit2>  # commit2 = e604ce4 

$ git push origin HEAD   # push to remote 

revertまたはrebaseによりbranchBから2つのコミットを削除します。 Revertはgitの履歴を変更しないので好ましい。

元に戻す:

$ git checkout branchB 
$ git revert <commit1> 
$ git revert <commit2> 
$ git push origin HEAD 

リベース:

$ git checkout branchB 
$ git rebase -i efb2443   # go back to the commit before the two commmits you want to remove 

Now comment out (adding `#` before the commit hash) the two commits you want to remove. 

$ git push -f origin HEAD  # you need to force(-f) push as history is changed here by rebasing 
+0

私はが(サーバーにコードをプッシュする)チェリーピックした後に何かを行う必要がありますか? – lee

+0

はい、最新のコードをリモートにプッシュする必要があります。 –

+1

@leeインタラクティブ・リベース( 'rebase -i')を使ってブランチBを削除するのではなく、ブランチBの2つのコミットを元に戻す方が良いかもしれません。以前にブランチBにプッシュした変更を誰か(または多くの人)が引っ張ってしまった場合、更新されたブランチを(強制的に)プッシュすると、それらのヒストリーを書き換えます。これは彼らに頭痛を与え、gitエチケットに対するものです。 – mattliu

関連する問題