「マスター」を「オリジン/マスター」にリセットするにはどうすればよいですか?


216

次のことをもっと簡単にできますか?

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

時には、これは作業ツリーに触れることなく行うことができます。stackoverflow.com/a/12343727/586086
アンドリュー真央

6
受け入れられた回答を更新してください:@KindDragonの回答はより正確で短くなっています。
ロバートシーマー

回答:


310

以下のようKindDragon答えは言及、あなたは再作成することができますmasterを直接origin/master持ちます:

git checkout -B master origin/master

git checkoutmanページには 言及します:

場合は-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はオプションです。


1
これは1行で行えます。
ロバートシーマー

94

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

git checkout -B master origin/master

origin/masterブランチをチェックアウトしてから、ブランチをリセットしmasterます。


4
唯一の真の答え。
ロバートシーマー

3
4つのキーストロークを保存します。引用符は必要ありません。Just:git checkout -B master origin / master
zumalifeguard

2つのことをコミットしたとしましょう。1つ目はブランチとのマージであり、2つ目は通常のブランチです。オリジン/マスターに戻ると、マージはどうなりますか?
utdev 16

1
更新さgit fetch origin masterれることを確認する前にする必要origin/masterはありませんか?
ペドロザス

はい、もちろん、git fetch最初にすべきすべてのソリューションで
-KindDragon

29

VonCの答えでさえ、このオプションに比べて複雑だと思います。

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

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

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

リポジトリ内の孤立オブジェクトを気にする場合は、実行できます git gc


1
興味深い代替案のようです。+1
VonC

私はまだAlready on 'master'
yourfriendzak

@yourfriendzak、マスターを更新する前に既にマスターがチェックアウトしている可能性があることを考慮するのを忘れました。その場合でもうまくいくはずの答えに答えを更新しました。
アレクサンダーバード

これは、マスター上にない場合でも機能します(実際には、チップの原点/マスターを指している切り離されたHEAD状態のように)。その後、レポジトリを介して古いファイルをフリップすることなくマスターをチェックアウトできます。すばらしいです!
アンドリューマオ14

20

すでに接続しているmaster場合は、次を実行できます。

git reset --hard origin/master

ローカルmasterブランチをリモートorigin/masterに向け、作業ディレクトリの変更を破棄します。


そして、ファイルを削除します!ファイルを作成/編集し、それらに対して「git add」を実行した場合、このコマンドはそれらを削除します。注意してください。
Cheeso

このアプローチはより良いですgit checkout -B master origin/masterか?
ジム・アホ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.