git reset --hard origin / masterの意味は何ですか?


224

私はやったgit pullし、エラーが発生しました:

次の作業ツリーファイルはマージによって上書きされます...マージする前に、それらを移動または削除してください。

これを解決するために、私は次のことを行いました:

git fetch
git reset --hard origin/master

今私がするときgit pull、それは最新のものすべてを言います。これらのコマンドを実行したときに正確に何が起こるか知りたいのですが。git fetchローカルリポジトリにマージせずに、リモートリポジトリから変更をフェッチすることはわかっています。

の意味はgit reset --hard origin/master何ですか?どのように機能しますか?

回答:


414
git reset --hard origin/master

言う:ステージングされた変更とステージングされていない変更をすべて破棄し、現在のローカルブランチのすべてを忘れて、とまったく同じにしorigin/masterます。

コマンドを実行する前に、おそらくこれを確認したいと思います。破壊的な性質は、「ハードリセット」と同じ言葉を使用することでほのめかされます。


9
この移動は、を使用して元に戻すことができgit reset --hard HEAD@{1}ます。HEAD@{1}状況によって異なりますので、で検索することをお勧めしますgit reflog
Nils Werner

2
移動を元に戻すための@NilsWernerのメソッドは、段階的および段階的でない変更を復元しないことに注意してください。それらは永久になくなっています。
マイケルアンダーソン

3
ステージングされたファイルは引き続きで見つけることができますがgit fsck --lost-found、元のファイルパスに添付されないため、並べ替えが難しい場合があります。
CBベイリー

1
ローカルブランチではなくローカルマスターに変更を(おそらく誤って)コミットした場合、ローカルマスターブランチをorigin / masterにリセットすると便利です。最新のコミット用のローカルブランチを作成し、ローカルマスターをorigin / masterにリセットするだけです。その後、必要に応じてマスターからブランチをマージまたはリベースできます。
マイクホッパー

2
lol "hinted at"はこれを説明するのに最適な方法です。それは明白または明示的なものには
ほど遠いためです
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.