さまざまなバージョンコントロールシステムにおいて、ブランチが実装される方法は異なり、VCはこれらの違いを完全に隠蔽することはできません。
BazaarとMercurialを含む分散型バージョンコントロールシステムのいくつかは、ノーマルモードの操作では、各ブランチは自身の作業ディレクトリーツリーをもつので、ブランチの切り替えは単にディレクトリーを切り替えるだけです。Gitでは、ブランチは通常、同じディレクトリーの共通場所(co-located)を使用し、ブランチの切り替えは、作業ツリーの内容をそのブランチに一致するように変更する、git
checkout
を使用して行われます。Bazaarも共通場所をサポートし、この場合はbzr
switch
コマンドによりカレントディレクトリーでブランチを切り替えます。Subversionでは他のブランチに切り替えるのに、svn
switch
コマンドを使用します。
カレントディレクトリーの他のブランチに切り替えるVCコマンドは、C-x v r branch-name RET
(vc-retrieve-tag
)です。
集中型のバージョンコントロールシステムでは、最新の作業ファイルでC-u C-x v vとタイプして(Advanced C-x v vを参照してください)、他のブランチのリビジョンIDを入力することにより、ブランチ間を切り替えることもできます。たとえばCVSでは、trunk(幹の意。開発の主要ラインを示します)のリビジョンは通常、1.1、1.2、1.3、…という形式をもち、最初のブランチがリビジョン1.2から作成された場合、リビジョン1.2は1.2.1.1、1.2.1.2、…というリビジョンIDをもち、さらに2番目のブランチが同じくリビジョン1.2から作成された場合、それは1.2.2.1、1.2.2.2、…という形式になります。ブランチのリビジョンIDから最後の部分を除いた(たとえば1.2.1)、ブランチID(branch ID)を指定して、そのブランチの最新のリビジョンに切り替えることもできます。
ロックベースのシステムでは、他のブランチに切り替えることにより、作業ツリーのロックが解除(書き込み禁止)になります。
1度ブランチを切り替えると、そのブランチを他に切り替えるまで、VCコマンドはそのブランチに適用されます。たとえば任意のVCファイルセットをコミットすると、そのブランチにコミットされるようになります。