96

特定のローカルブランチに「コピー」されたリモートブランチの正確な「コピー」が必要です。

たとえば、チーム メンバーが実験的な機能を作成し、それをexperimentリモート リポジトリで呼び出されたブランチにチェックインしたとします。experimentローカル リポジトリで新しいブランチをチェックアウトし、そのブランチをそのまま、新しくチェックアウトしたブランチに「コピー」できるようにしたいと考えています。

私はそれを自分のコードとマージしたくありません。コードを完全に上書きして、「実験」ブランチで彼が行ったことをきれいに見ることができるようにしたいのです。

他の誰かがリモート リポジトリにコミットしたリモート ブランチを自分のローカル リポジトリに "取得" (フェッチ/プル/何でも...) するには、自分のローカル コードでマージを実行しようとしない方法で行います。 ?

4

3 に答える 3

162

マージを気にしない場合:

git reset --hard <remote>/<branch_name>

これはまさにあなたが望むことを行います: マージもリベースもせず、ローカルブランチをリモートとまったく同じ状態にするだけです。

ただし、あなたの場合、それは必要ありません。リモートと同じ状態の新しいローカル ブランチを作成する場合は、ローカル ブランチを作成するときにリモート ブランチを指定しますgit checkout

git checkout -b <my_new_branch> <remote>/<branch_name>

同じ名前をローカルで使用する場合は、次のように短縮できます。

git checkout <branch_name>

git reset --hard既にローカル ブランチがある場合 (たとえば、いくつかの変更がある場合) を使用し、行った変更をすべて破棄して、代わりにリモート ブランチの正確なバージョンを取得します。

リモート ブランチを最新の状態に保つにはgit fetch <remote>、チェックアウトまたはリセットする前に使用します。

于 2012-07-06T05:42:50.787 に答える
8

コメントするには十分な担当者がいませんが、まだ苦労している人のために例を追加したいと思います. 私の例では、Github をリモートとして使用し、ブランチを Linux サーバー環境/ターミナルにコピーしています。

まず、最新の状態であることを確認するために実行git fetchします。

の例を使用して

git checkout -b <my_new_branch> <remote>/<branch_name>

「picklerick」という名前のリモート ブランチを使用</p>

走った

git checkout -b picklerick remotes/origin/picklerick

おそらくremote/picklerickリモートパスに使用できたかもしれませんが、これでうまくいきました。

于 2019-12-28T19:26:04.063 に答える
7

git remoteコマンドoriginが結果として出力すると仮定すると、

git fetch origin remote_branch_name:local_branch_name

必要なリモートブランチの正確なコピーであるローカルブランチを作成します。

編集:代替のより現代的なソリューションがあります:

git switch remote_branch_name

このコマンドは、指定されたリモート ブランチと同じ名前のローカル ブランチを作成します。

于 2021-04-07T07:11:23.977 に答える