各種バージョン管理システムはブランチの実装方法が異なり、その違いをVCで完全に覆い隠すことはできない。
Bazaarや、通常動作モードにおけるMercurialを含む一部の分散型バージョン管理システムでは、各ブランチが独自のワーキングディレクトリツリーを持つため、ブランチ間の切り替えは単にディレクトリを切り替えるだけで行えます。Gitでは、通常ブランチは同じディレクトリ内に共存しており、ブランチ間の切り替えにはgit checkoutコマンドを使用します。このコマンドは、ワーキングツリーの内容を切り替え先のブランチに合わせて変更します。Bazaarも共存ブランチをサポートしており、その場合はbzr switchコマンドで現在のディレクトリ内のブランチを切り替えます。Subversionでは、svn switchコマンドを使用して別のブランチに切り替えます。Mercurialでは、hg updateコマンドを使用して別のブランチに切り替えます。
カレントディレクトリ内の別のブランチに切り替えるVCコマンドは C-x v b s branch-name RET (vc-switch-branch) です。
集中型バージョン管理システムでは、最新の作業ファイルに C-u C-x v v と入力し、別のブランチにあるリビジョンのリビジョンIDを入力することで、ブランチを切り替えることもできます(C-x v v における高度な制御を参照)。例えばCVSでは、trunk(開発のメインライン)のリビジョンは通常 1.1, 1.2, 1.3, … という形式のIDを持ちますが、(例えば)リビジョン 1.2 から作成された最初のブランチのリビジョンIDは 1.2.1.1, 1.2.1.2, … となり、リビジョン 1.2 から作成された2番目のブランチのリビジョンIDは 1.2.2.1, 1.2.2.2, … となる、といった具合です。また、ブランチID(末尾のコンポーネントを除いたブランチのリビジョンID、例:1.2.1)を指定して、そのブランチの最新リビジョンに切り替えることもできます。
ロックベースのシステムでは、別のブランチに切り替えるとワーキングツリーのロックも解除(書き込み保護)されます。
ブランチを切り替えると、再び切り替えるまでVCコマンドはそのブランチに適用されます。例えば、コミットしたVCファイルセットは、その特定のブランチにコミットされます。