Git でリモート ブランチをローカル ブランチにコピーする

Ankit Raj Goyal 2024年2月15日
  1. Git でリモート ブランチをローカル ブランチにコピーする最新かつ最良の方法 - git switch -c
  2. Git でリモート ブランチをローカル ブランチにコピーする古い方法 - git checkout
  3. git branch コマンドの --copy オプションを使用して、リモート ブランチを Git のローカル ブランチにコピーする
  4. 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

Repo 複数ブランチのセットアップ

リモートリポジトリでは、次のようになります。

リモートでコピーするブランチ

another_branch という名前のブランチをローカル リポジトリにコピーします。

まず、git fetch コマンドを使用してリモート ブランチをローカル リポジトリにフェッチします。

git fetch --all

これにより、リモート ブランチが取得されます。

リモート ブランチを取得

git switch コマンドで origin/another_branch のコピーを作成します。

いくつかのオプションを渡します - 新しいコピー ブランチを作成するための -c フラグ (事前に存在しません)。 また、クローンではなくブランチのコピーのみが必要なため、--no-track オプションも指定します (この投稿の後半で)。

git switch -c <new_branch> <old_branch> --no-track

Git Switch New Local Copy

このコマンドは、new_local_copy という名前の新しいコピーを作成し、それにスイッチ (チェック) しました。

Switch No Tracking Relation

ローカル リポジトリのすべてのブランチを一覧表示すると、コピーされたブランチ 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 コピー

以下では、新しく作成されたブランチが古いリモート ブランチを追跡していないことがわかります。

Checkout No Tracking Relationをコピー

この古い方法と新しく導入された 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 コピー

Git コピーとクローンの違い

Git copy は Git clone と同じではありません。 いくつかの微妙な違いがあります。

  1. ブランチをコピーすると、新しいブランチは古いブランチを追跡しません。 これは、2つの間に関連がないことを意味します。新しいブランチは、古いブランチの内容をコピーしただけです。

    ただし、clone は古いブランチを追跡します。 これは、明示的な引数を渡すことなく、これらのコマンドをバニラ形式でプッシュ、プル、マージ、リベース、および使用できることを意味します - 追跡関係はブランチ名を自動的に埋めます。

  2. Git では、クローニングは効率のために最適化されています。 そのため、クローンを作成すると、新しいブランチは古いブランチの reflog、構成、およびフックを取得しません。

    copy はこれらもすべてコピーします。 たとえば、reflogを使用して失われたコミットを回復しようとする場合など、場合によっては非常に重要です。

  3. Git copy 操作には、いくつかの典型的な使用例があります。最も一般的な使用例は、リモート ブランチのバックアップを作成することです。 もう 1つのユース ケースは、開発者が変更をメイン コードベースにプッシュする意図がなく、興味深いリモート機能ブランチをダウンロードして探索したい場合です。