もっと簡単な方法で次のことができますか?
git checkout Origin/master
git branch -D master
git branch master
git checkout master
KindDragon の 答え が述べているように、master
はOrigin/master
で直接再作成できます。と:
git checkout -B master Origin/master
git checkout
のmanページ には、次のように記載されています。
-B
が与えられた場合、<new_branch>
が存在しなければ作成されます。それ以外の場合、リセットされます。これはトランザクションと同等です。
$ git branch -f <branch> [<start point>]
$ git checkout <branch>
当初の提案:
何かのようなもの:
$ 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はオプションです。
Gitはこのコマンドをサポートしています。
git checkout -B master Origin/master
Origin/master
ブランチをチェックアウトして、そこでmaster
ブランチをリセットします。
私はVonCの答えでさえこの選択肢と比較して複雑であると思います:
git update-ref refs/heads/master Origin/master
git reset --hard master
gitは自動的にrefのすべての値を(reflogを通して)記録します。そのため、そのコマンドを実行した後、master@{1}
はmasterの以前の値を参照します。
VonCの答えは正しいですが、それはmasterの古い値をファイルシステムにチェックアウトするのに時間を浪費します。
リポジトリ内の孤立したオブジェクトに関心がある場合は、git gc
を実行できます。
既にmaster
に参加している場合は、次のことができます。
git reset --hard Origin/master
ローカルのmaster
ブランチからリモートのOrigin/master
を指し示し、作業ディレクトリの変更を破棄します。