web-dev-qa-db-ja.com

どうやって 'master'を 'Origin / master'にリセットするのですか?

もっと簡単な方法で次のことができますか?

git checkout Origin/master
git branch -D master
git branch master
git checkout master
194
Xiè Jìléi

KindDragon答え が述べているように、masterOrigin/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はオプションです。

277
VonC

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

git checkout -B master Origin/master

Origin/masterブランチをチェックアウトして、そこでmasterブランチをリセットします。

85
KindDragon

私はVonCの答えでさえこの選択肢と比較して複雑であると思います:

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

gitは自動的にrefのすべての値を(reflogを通して)記録します。そのため、そのコマンドを実行した後、master@{1}はmasterの以前の値を参照します。

VonCの答えは正しいですが、それはmasterの古い値をファイルシステムにチェックアウトするのに時間を浪費します。

リポジトリ内の孤立したオブジェクトに関心がある場合は、git gcを実行できます。

29
Alexander Bird

既にmasterに参加している場合は、次のことができます。

git reset --hard Origin/master

ローカルのmasterブランチからリモートのOrigin/masterを指し示し、作業ディレクトリの変更を破棄します。

20
Fuad Saud