分散型バージョン管理システムでは、現在のブランチからローカルでコミットした変更を別のリポジトリに反映させます(いわゆるプッシュ変更)。この概念は、集中型バージョン管理システムには存在しません。
分散型バージョン管理システムでは、別のリポジトリから変更をプルインすることで、ローカルリポジトリの現在のブランチを更新します。
集中型バージョン管理システムを用いて、リポジトリから現在のVCファイルセットを更新してください。
分散型バージョン管理システムにおいて、コマンド C-x v P (vc-push) は、現在のブランチでローカルにコミットされた変更を、一般に アップストリームリポジトリ
と呼ばれる別の場所に更新します。接頭辞引数を指定すると、実行する具体的なバージョン管理コマンドの入力が求められ、これにより変更先を指定できます。デフォルトは、Bazaar
では bzr push、Git では git
push、Mercurial では hg push
です。デフォルトのコマンドは常に、ブランチ設定からバージョン管理システムによって決定されるデフォルトの場所にあるリポジトリにプッシュします。
プッシュする前に、C-x v O (vc-root-log-outgoing)
を使用して、アップストリームに送信される変更のログバッファを確認できます。VC Change Logを参照してください。
このコマンドは現在、Bazaar、Git、およびMercurialでのみサポートされています。集中型バージョン管理システムには「プッシュ」という概念はなく、この操作はチェンジセットのコミットの一部となるため、集中型VCSでこのコマンドを実行するとエラーになります。また、Bazaarのバインドブランチでこのコマンドを実行しようとした場合もエラーになります。バインドブランチでは、チェンジセットをコミットすると、ローカルブランチがバインドされているリモートリポジトリに自動的に変更がプッシュされるためです。
分散型バージョン管理システムでは、C-x v + (vc-pull)
コマンドにより、ローカルリポジトリの現在のブランチとワーキングツリーが、アップストリームリポジトリで行われた変更を反映して更新されます。このコマンドは通常、リモートブランチのコピー(別名
クローン)を更新する際に使用されます。プレフィックス引数を指定すると、使用する正確なバージョン管理コマンドの入力が求められ、変更をどこからプルするかを指定できます。指定しない場合は、ブランチ設定に基づいてバージョン管理システムが決定したデフォルトの場所にあるリポジトリからプルされます。
分散型バージョン管理システムの中で、C-x v + は現在、Bazaar、Git、Mercurial でのみサポートされています。Bazaar では、通常のブランチ(マスターブランチからミラーリングブランチへプルする場合)には bzr pull を、バインドブランチ(中央リポジトリからプルする場合)には bzr update を呼び出します。Git では、リモートリポジトリから変更を取得して現在のブランチにマージするために git pull を呼び出します。Mercurial では、デフォルトのリモートリポジトリからチェンジセットを取得してワーキングディレクトリを更新するために hg pull -u を呼び出します。
プルする前に、C-x v I (vc-root-log-incoming) を使用して、適用予定の変更内容のログバッファを確認できます。VC チェンジログを参照してください。
CVSのような集中型バージョン管理システムでは、C-x v +がリポジトリから現在のVCファイルセットを更新します。