2
私は開発時に事故があります。私は、ブランチAで必要な2つのコミットをしていますが、私は今では分岐Bにプッシュされ、私はそれらを移動したいAを分岐して、分岐Bからそれらを削除するにはコミット詳細は画像を参照してください:Git/sourceツリーの移動は、ブランチBでブランチAにコミットします
私は開発時に事故があります。私は、ブランチAで必要な2つのコミットをしていますが、私は今では分岐Bにプッシュされ、私はそれらを移動したいAを分岐して、分岐Bからそれらを削除するにはコミット詳細は画像を参照してください:Git/sourceツリーの移動は、ブランチBでブランチAにコミットします
まず、branchA
とcherry-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
私はが(サーバーにコードをプッシュする)チェリーピックした後に何かを行う必要がありますか? –
lee
はい、最新のコードをリモートにプッシュする必要があります。 –
@leeインタラクティブ・リベース( 'rebase -i')を使ってブランチBを削除するのではなく、ブランチBの2つのコミットを元に戻す方が良いかもしれません。以前にブランチBにプッシュした変更を誰か(または多くの人)が引っ張ってしまった場合、更新されたブランチを(強制的に)プッシュすると、それらのヒストリーを書き換えます。これは彼らに頭痛を与え、gitエチケットに対するものです。 – mattliu