回答:
「トランク」が「マスター」に、「ブランチ」が「ヘッド」に、「タグ」が「タグ」になりますが、フォルダーにはなりません。、それらはで、 refs」、リポジトリ内の別のネームスペースに存在するリビジョンへのラベル。
SubversionとGitの分岐方法は異なります。基本的なサブバージョンモデルは、単一のグローバルタイムラインを持つディレクトリツリーを持ち、分岐する場合は、サブツリーを別のディレクトリにコピーします。
一方、Gitには、それぞれがその親を定義するリビジョンを持つディレクトリツリーがありますが、各リビジョンは複数の親(マージ)と複数の子(ブランチ)を持つことができます。したがって、ブランチ用のディレクトリを持つ代わりに、独自に作成されたリビジョンを取得します。「refs」は、特定の「ブランチ」の最新リビジョンに関連付けられた名前です。
この違いは、分散バージョン管理の基本です。Git(および他の分散システム)には、履歴を線形に維持する中央権限がないため、複数のリポジトリで相互に知らなくてもリビジョンを個別に作成でき、システムはそれらに対応する必要があります。一般化により、一般的に分岐とマージがはるかに簡単になります。
Gitでは、リビジョンはどのブランチにもないことに注意してください。それらはただあり、ブランチにはそれらが含まれています。しかし、ブランチがマージされるか、完全に機能しなくなったことが判明したら、それを指す「ref」を削除し、それを完全に忘れることができます(古いトライアルを破棄すると、最終的にガベージコレクションされますgit gc
)。これにより、以前の実験で誰が何をしていたのか誰も覚えていないので、あなたが古い実験に圧倒されるのを避けるのに役立ちます。
Gitは、SVNの2Dに表示されるのと同じデータの3Dビューであると考えてください。つまり、SVNを使用するとルートが分岐し、ツリーの新しいフォルダーとして表示されるコピーとして表示されます。Gitを使用すると、分岐すると、既存のツリーの上に「レイヤー」として表示されるコピーとして表示されます。違いを概念化するのは非常に簡単であることに気づいたら。
SVNを使用しても、Gitと同じように動作できます。ブランチ間の切り替えは、コードベースの単一ビューをブランチビューに置き換えます。これは、svn switchまたはgit checkoutを使用するかどうかに関係なく適用されます。
明らかに、そのフォルダーの場所へのブランチをチェックアウトすることでSVNでブランチのコピーを取得できます。これは、ディスク上の別の場所にgitリポジトリをクローンするのと同じです。
同じことがタグにも当てはまります-gitリビジョンにラベルを付けるか、リリース用にブランチを作成できます。SVNタグはブランチと同じで、「タグ」と呼ばれる唯一の規則です。SVNリポジトリのラベル(リビジョン番号を記録)を使用して、リリースのスナップショットを取得することもできます。
gitとsvnの違いは、ソース管理の基礎ではなく、チェックインとチェックアウトがどのように発生するかに関係しています。コードのビューは異なる場合があります(gitにブランチを含むコードツリーの単一のビューは表示されず、SVNで部分的なリポジトリをブランチできますが、これらは最終的に小さな違いです)