Claude 3.7 with extended thinking 様によると
Gitはスナップショットベースのシステムで、各コミットはファイルシステム全体の完全なスナップショットを保存します(最適化されていますが)。一方、Mercurialは変更セット(changeset)という概念で差分ベースの履歴を管理します。
この根本的な違いがGitの操作モデルに影響しています。rebaseやcherry-pickが新しいコミットを作成するのは、Gitがスナップショットモデルを採用しているからこそ自然です。既存のスナップショットを新しい文脈に適用すると、新しい状態のスナップショットが必要になります。
パラダイムと実装は密接に関連しており、Gitの設計思想はLinus Torvaldsが述べているように内部データモデルから生まれています。このモデルがGitの分散性、ブランチ操作の柔軟性、大規模プロジェクトでの優位性につながっています。