タイトルが示唆するように、私はなぜこれほど多くの人が Git を SVN よりも優れたブランチ/マージの代替として宣伝するのか興味があります。私が主に興味を持っているのは、SVN マージがひどいので、代わりのソリューションが欲しいからです。
Git はマージをどのように処理しますか? どのように機能しますか?
たとえば、SVN に次の行があるとします。
「こんにちは世界」
次に、user1 は次のように変更します。
こんにちは世界!1
次に、user2 は次のように変更します。
こんにちは世界!12
次に、user2 がコミットし、次に user1 がコミットすると、SVN で競合が発生します。Git はこのような単純な問題を解決できますか?
ベストアンサー1
それは競合を伴うマージで呼び出され、VCあなたに代わって解決してくれることはありません。
マージは自分で手動で解決する必要があります。
前述の通りGit でのマージが SVN よりも優れている理由実際の違いはコミットの履歴記録にあります。
- SVN の線形
- Git の DAG (有向非巡回グラフ)
これにより、Git はすでにマージしたものを記憶できるようになり、競合の発生が大幅に減少します。
したがって、5bから(a)ブランチへのマージを行うとき、DAGの情報を使用して、3bと2bがすでに完了していることを知ることができます。
つまり、マージワークフローGitはSVNよりもずっとうまく処理します
。Git と SVN のマージ具体的な例については。