git – ‘master’ を ‘origin/master’ にリセットするには?

git

もっと簡単な方法で以下のようなことができますか?

git checkout origin/master
git branch -D master
git branch master
git checkout master

  254  Xiè Jìléi  2011-04-20


ベストアンサー

Gitはこのコマンドをサポートしています

git checkout -B master origin/master

origin/masterブランチを確認して、そこでmasterブランチをリセットします

120  KindDragon  2014-08-24


KindDragon回答が言及しているように、masterorigin/masterで直接再現することができます

git checkout -B master origin/master

git checkout人のページで言及されています

-Bが与えられた場合、<new_branch>が存在しなければ作成され、そうでなければリセットされます。これはトランザクション的には

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

Git 2.23+(2019年8月)以降、git checkout is too confusing, the new (still experimental) command is git switchから

git switch -C master origin/master

That is:

-C <new-branch>
--force-create <new-branch>

--createと似ていますが、<new-branch>が既に存在する場合は<start-point>にリセットされます。 のショートカットとして便利です

$ git branch -f <new-branch>
$ git switch <new-branch>

Originally suggested:

Something like:

$ git checkout master

# remember where the master was referencing to
$ git branch previous_master

# Reset master back to origin/master
$ git reset --hard origin/master

ステップ2はオプションです

377  VonC  2011-04-20


VonCの回答ですら、この選択肢に比べて複雑さがあると思います

git update-ref refs/heads/master origin/master
git reset --hard master

git は ref のすべての値を自動的に (reflog を通して) ログに記録します。つまり、そのコマンドを実行した後では、master@{1} は master の前の値を参照していることになります

VonCさんの答えは正しいのですが、マスターの古い値をファイルシステムにチェックアウトするのは時間の無駄です

レポ内の孤児オブジェクトが気になる場合は、git gcを実行します

30  Alexander Bird  2013-01-23


すでにmasterの場合は以下のようにします

git reset --hard origin/master

これはローカルのmasterブランチをリモートのorigin/masterに指し示し、作業ディレクトリ内の変更を破棄します

25  Fuad Saud  2014-06-25


タイトルとURLをコピーしました