もっと簡単な方法で以下のようなことができますか?
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の回答が言及しているように、master
をorigin/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