私はgit、master /と1.7 /に2つのブランチを持っています。チェリーピックを使用してmaster /から1.7 /にいくつかの修正をバックポートします。 (私は唯一の変更点のいくつかをしたいので、マージ使用していないよ。):私は、1.7 /(に入ってきたすべての変更をしたいので、チェリーをマスターからブランチにしてからブランチからマスターにマージするときに繰り返しコミットすることを避ける
$ git checkout 1.7
$ git cherry-pick -x <initial commit SHA>..<master change 2 SHA>
その後、後に、私は、1.7 /バックマスター/へのマージバックメインラインにマージする)チェリーピックthemeselvesを除く:
$ git checkout master
$ git merge 1.7
私の問題は、この再びマスター/へ)/元々マスターから(チェリーピックを再コミットすることです:
$ git log --oneline
8ecfe22 Merge branch '1.7'
fe3a60d master change 2 (cherry picked from commit f5cca9296e45d5965a552c45551157ba
9c25f53 master change 1 (cherry picked from commit 8fae2a68a356f5b89faa8629b9a23b23
f5cca92 master change 2
8fae2a6 master change 1
ffa10bf initial commit
私の本当の再会それはマージの競合を引き起こしました。
私の質問は、これを避けることができますか?
この現象を再現するためのコマンドの完全なリスト:
$ git init
<create Dialog.js file>
$ git add Dialog.js
$ git commit -am "initial commit"
$ git branch 1.7
<edit Dialog.js file>
$ git commit -am "master change 1"
<edit Dialog.js file>
$ git commit -am "master change 2"
$ git log
$ git checkout 1.7
$ git cherry-pick -x <initial commit SHA>..<master change 2 SHA>
$ git checkout master
$ git merge 1.7
$ git log
はい、私はrebaseの作業を想像することができますが、gitコミュニティでは、ブランチ上のrebaseを呼び出すことは死の罪とみなされます。 別の方法がありますか?私は "git merge"を使ってmaster /から1.7 /に変更を移すことができました。リベース-iに似た-iオプションのように?そして、もし私がそれをしたら、マスターからどの変更が来たのかを覚えておいて、後でそれらをマスターに再統合しようとしないでしょうか? –
私は上記の "public *ブランチにrebaseを呼び出すのは死の罪とみなされます"と言っていた以上のものです。 –