Git でリモート ブランチをローカル ブランチにコピーする
-
Git でリモート ブランチをローカル ブランチにコピーする最新かつ最良の方法 -
git switch -c
-
Git でリモート ブランチをローカル ブランチにコピーする古い方法 -
git checkout
-
git branch
コマンドの--copy
オプションを使用して、リモート ブランチを Git のローカル ブランチにコピーする - Git コピーとクローンの違い
このチュートリアルでは、新しい git switch -c
コマンドを使用してリモート ブランチをローカル ブランチにコピーする方法を示します。 これを行う 2つの古い方法について説明します - git checkout
リモート ブランチからローカルへ、および -c
フラグを使用した git ブランチ。
コンテンツをローカル ブランチにコピーするだけで、リモートとの追跡関係は作成しません。 ここでの使用例は、バックアップの作成またはコンテンツの調査ですが、変更をリモート ブランチにマージしたくはありません。
Git でリモート ブランチをローカル ブランチにコピーする最新かつ最良の方法 - git switch -c
以前、コマンド git checkout
は複数の目的でオーバーロードされていました。 別のブランチにチェックインし、コミットから変更を復元します。
これにより、開発者の間で多くの混乱が生じました。
Git の新しいバージョン (Git v2.23、2019 年第 3 四半期以降) では、別のブランチにチェックインするための新しいコマンド git switch
が導入されました。 --create
オプションを使用すると、切り替える前にブランチが存在しない場合に新しいブランチを作成するために使用できます。
これは、リモートをローカル ブランチにコピーするための最も推奨される方法です。
いくつかのブランチを含むリモート リポジトリをセットアップし、git branch
コマンドでそれらを一覧表示します。
git branch -a
リモートリポジトリでは、次のようになります。
another_branch
という名前のブランチをローカル リポジトリにコピーします。
まず、git fetch
コマンドを使用してリモート ブランチをローカル リポジトリにフェッチします。
git fetch --all
これにより、リモート ブランチが取得されます。
git switch
コマンドで origin/another_branch
のコピーを作成します。
いくつかのオプションを渡します - 新しいコピー ブランチを作成するための -c
フラグ (事前に存在しません)。 また、クローンではなくブランチのコピーのみが必要なため、--no-track
オプションも指定します (この投稿の後半で)。
git switch -c <new_branch> <old_branch> --no-track
このコマンドは、new_local_copy
という名前の新しいコピーを作成し、それにスイッチ (チェック) しました。
ローカル リポジトリのすべてのブランチを一覧表示すると、コピーされたブランチ new_local_copy
は、コピーしたブランチ another_branch
を追跡しません。
git switch remote branch
を使用して、ローカル リポジトリにコピーを作成することをお勧めします。
Git でリモート ブランチをローカル ブランチにコピーする古い方法 - git checkout
git checkout は古いバージョンの Git で多くのことを行っていたコマンドです。 そのうちの1人は別のブランチに切り替えていました。
したがって、Git checkout remote branch to local は、ローカル コピーを作成するための古い方法でした。
まず、コピーしたいリモート ブランチにチェックアウトします。 (必ず最初にブランチを取得してください。)
git checkout <remote_branch>
次に、git branch
コマンドを使用して、このブランチの新しいコピーを作成します。 2つのブランチ間に追跡関係を作成したくないため、再び --no-track
オプションを渡します。
git branch <new_branc> --no-track
以下では、新しく作成されたブランチが古いリモート ブランチを追跡していないことがわかります。
この古い方法と新しく導入された git switch
コマンドの間に、git branch
コマンドはブランチをコピーするための --copy
オプションを学習しました。 この方法でリモートを新しいローカル ブランチにコピーする方法を見ていきます。
git branch
コマンドの --copy
オプションを使用して、リモート ブランチを Git のローカル ブランチにコピーする
これは 2 段階の手順です。
まず、git checkout
コマンドでリモート ブランチをチェックアウトします。 --no-track
オプションに注意してください。
git checkout <old_branch> --no-track
次に、-c
フラグ (--copy
用) を git branch
コマンドに渡して、新しいブランチにコピーします。
git branch -c <old_branch> <new_branch>
ここでも、新しいコピーが古いブランチを追跡していないことがわかります。
Git コピーとクローンの違い
Git copy
は Git clone
と同じではありません。 いくつかの微妙な違いがあります。
-
ブランチをコピーすると、新しいブランチは古いブランチを追跡しません。 これは、2つの間に関連がないことを意味します。新しいブランチは、古いブランチの内容をコピーしただけです。
ただし、
clone
は古いブランチを追跡します。 これは、明示的な引数を渡すことなく、これらのコマンドをバニラ形式でプッシュ、プル、マージ、リベース、および使用できることを意味します - 追跡関係はブランチ名を自動的に埋めます。 -
Git では、クローニングは効率のために最適化されています。 そのため、クローンを作成すると、新しいブランチは古いブランチの reflog、構成、およびフックを取得しません。
copy
はこれらもすべてコピーします。 たとえば、reflog
を使用して失われたコミットを回復しようとする場合など、場合によっては非常に重要です。 -
Git
copy
操作には、いくつかの典型的な使用例があります。最も一般的な使用例は、リモート ブランチのバックアップを作成することです。 もう 1つのユース ケースは、開発者が変更をメイン コードベースにプッシュする意図がなく、興味深いリモート機能ブランチをダウンロードして探索したい場合です。