私は問題があります。分岐があったmaster
とfeature
。 1百数年前、master
とfeature
には共通の祖先がありましたが、それ以降は100500回のコミットが行われました。 master
とfeature
の分岐が非常に分岐しています。 OK。私は一日中長い時間を過ごしており、最後にこの%#$%#マージを完了しました。しかし... 1日の終わりに、私はこの結果をリポジトリにプッシュし、私のチームメイトが「master」ブランチで約5つの新しいコミットを行ったことに気付きました... $#%#$それは私にとって重要ですdo rebase早送りするには、これを先に進めてください。だから、この5つのコミットをマージ結果に組み込む必要があります。私はすでにE
をmaster
をfeature
にマージした結果である自分のローカルレポで(コミットを見て)コミットしています。私はC1のためにサーバー上でそれを押すことはできません... C5 - 新しいリモートのコミットfeature
。私がすでに何か新しいことをリモートで持っているとき私のための標準的な練習は、私はすでに変更を加えたときに、私はgit pull --rebase
1つのブランチの履歴を保持するリニア。私はgit pull --rebase
を実行し、実際にgitから提案を得て、再びすべてをマージします。 C1にも触れられていないファイルにも多くの競合があります。C5がコミットします。私は間違っているの?助けてください。どのように私は第二のスキームで溺れている結果を得るために?私は狂ってる?まったくできますか?最初早送りマージコミットの必要性によって複雑な2つの非常に異なるブランチのマージを実行
Now:
o--A--o-----...100500 commits....[master]....--o-----------B
\ \
o---...100500 commits....[feature - local repo]...C--E(local repo - epic merge result)
|
o---...100500 commits....[feature - remote repo]..C--C1--C2--C3--C4--C5(remote repo, feature branch - additional 5 commits)
Need to fast-forward E ahead C1, C2,... C5, that were added on remote when I was busy with merge:
o--A--o-----...100500 commits....[master]....--o-----------------------B
\ \
o---...100500 commits....[feature]...--o--C--C1--C2--C3--C4--C5--E(epic merge result)
更新
私は(feature
ブランチに滞在)git pull --rebase
をやっている私は...、C5は(feature
ブランチのリモートにコミット)、GitはC1の上に置くことを試みることに気づきました、次に2番目に、ブランチのmaster
の他の100500コミット。それは私が望むものではありません。私はE
C1の上にコミットする必要があります.. C5が、master
ブランチのすべてのコミットではありません。私はgit rebase --continue
の間でgitk --all
を調べると、この動作を見ると、競合が発生し、git mergetool
サイクルになります。
申し訳ありませんが、私はばかです、あなたのアイデアをより詳しく説明してください。 「マージして履歴を取り、その上に5つの新しいコミットをリベースする」という意味です。私が中止したリベース中にマージを処理することを意味しますか? (それは地獄です!) – Dao
@Dao:あなたの現在の歴史では、地元の特徴がマージされたマスターがあります。あなたはそれの上にリモート機能をrebaseしたい。最も単純な方法は、実際には5つのコミットのすべてをチェリーピックすることです( 'git cherry-pick ..remote/feature')。 –
@Dao:また、ローカルの機能ブランチをチェックアウトし、それをリモートに一致するように更新し、次に 'git rebase master'だけにすることができます。 –