1

リモートブランチのリベースとマージについてかなりの調査/実践を行いましたが、最終的にリモートブランチの重複コミットや早送り以外のプッシュを引き起こさない解決策を見つけることができません。これが私がやろうとしていることです。

master(tracking origin/master) とhebe(tracking )の 2 つのブランチがありorigin/hebeます。1か月前に適切hebeに分岐されました。master毎日、両方のブランチで作業している開発者が何人かいます。

masterは引き続き維持されており、共通コードにいくつかのバグ修正があり、hebeブランチに反映/更新する必要があります。hebeただし、新しいコードはどれもmaster

私はもう試した:

git rebase master hebe

ログからは、まさに私たちが望んでいたものであると思われました。コミットhebeは最新の.masterhebeorigin/hebe

それとも、間違った方向からアプローチしており、サブモジュールが適切な解決策でしょうか?

4

1 に答える 1

2

履歴を書き換えてコミットのshaを変更するため、すでにプッシュされて他の人と共有されている非常にまれなケースでのみ、ブランチをリベースする必要があります。これにより、前述の重複コミットが発生します。これは、shaが異なるとgitのコミットが異なることを意味するためです。
あなたの場合、マスターをとマージする方が良いです

$ git checkout hebe
$ git merge master
$ git push origin hebe

これにより、マスターからのすべての変更をマージしますが、マスターにhebe戻るものはなく、すべてのシャは同じままです。マージすると、代わりにいわゆるマージコミットが作成されます(早送りマージが不可能な場合)。

これは非常に重要であり、多くの混乱を招くため、最後にもう一度言わなければなりません。自分が何をしているかを完全に確信していない限り、すでに共有されているブランチをリベースしないでください。

マージ/リベースがどのように機能するかをよりよく理解するために、次の(オンラインで無料で利用できる)本http://git-scm.com/bookの第3章を読むことを強くお勧めします。

于 2013-03-12T22:41:33.953 に答える