問題があります。ブランチmaster
とfeature
. 100 年前master
とfeature
共通の祖先がありましたが、その時から 100500 のコミットが経過しました。master
ブランチは現在非常にfeature
多様です。Ok。私は一日中費やし、ついにこの %#$%# マージを完了しました。しかし...一日の終わりに、この結果をリポジトリにプッシュしようとしましたが、チームメイトが「マスター」ブランチで約5つの新しいコミットを行っていることに気付きました... $#%#$ それは私たちにとって重要ですリベースを実行して、このコミットより先にマージを早送りします。したがって、この 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)
更新(ブランチにとどまって
いる) ときに、git が最初に C1、..、C5 (ブランチのリモートでコミット)、次に 2 番目、次にブランチの他の 100500 コミットの上に置こうとすることに気付きました。それは私が望むものではありません。C1、..C5の上にコミットするだけで済みますが、ブランチのすべてのコミットは必要ありません。betweenを調べると、この動作が見られ、競合が発生し、サイクルが発生します。git pull --rebase
feature
feature
master
E
master
gitk --all
git rebase --continue
git mergetool