git merge
との違いは何ですかgit rebase
?
ベストアンサー1
元々A
、B
、 の3 つのコミットがあったとしますC
。
次に、開発者 Dan が commit を作成しD
、開発者 Ed が commit を作成しましたE
。
明らかに、この衝突は何らかの方法で解決する必要があります。これには 2 つの方法があります。
マージ:
コミットD
と は両方ともE
まだ残っていますが、とM
の両方の変更を継承するマージ コミットを作成します。ただし、これによりダイヤモンド形状が作成され、多くの人が非常に混乱することになります。D
E
リベース:
コミットを作成しますR
。実際のファイルの内容は上記のマージコミットと同じですM
。ただし、コミットはE
、存在しなかったかのように削除されます (ドット - 消失線で示されます)。この消去により、コミットE
は開発者 Ed のローカルになり、他のリポジトリにプッシュされることはなくなります。リベースの利点は、ダイヤモンド形が回避され、履歴がきれいな直線のままになることです。ほとんどの開発者はこれを気に入っています。