リモートOrigin上の不要なコミットのためにgit pullを元に戻したいのですが、どのリビジョンにリセットしなければならないのかわかりません。
Gitがリモートの原点を引っ張る前の状態に戻るにはどうすればいいですか?
または他の答えよりも明確にするために:
git pull
おっ?
git reset --keep HEAD@{1}
1.7.1より古いバージョンのgitには--keep
がありません。そのようなバージョンを使用する場合、--hard
を使用することができます - しかしそれはローカルの変更を失うので危険な操作です。
ORIG_HEADは以前のHEADの状態であり、元に戻すのが簡単なように、危険な動作をする可能性のあるコマンドによって設定されます。 HEAD @ {1}はORIG_HEADとほぼ同等です(HEAD @ {1}は常にHEADの最後の値、ORIG_HEADは危険な操作の前のHEADの最後の値です)
git reflog show
はあなたにHEADの歴史を示すべきです。これを使用して、pull
の前にいた場所を特定できます。それから、そのコミットにあなたのreset
をHEAD
できます。
これは私のために働きました。
git reset --hard ORIG_HEAD
マージを元に戻すかプルします。
$ git pull (1)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset --hard (2)
$ git pull . topic/branch (3)
Updating from 41223... to 13134...
Fast-forward
$ git reset --hard ORIG_HEAD (4)
これをチェックしてください: GitのHEADとORIG_HEAD 詳細は==。
実行したいコミットの<SHA#>
を見つけます。あなたはgithubでそれを見つけるか、コマンドラインでgit log
またはgit reflog show
をタイプしてそれからgit reset --hard <SHA#>
をすることによってそれを見つけることができます
マージを元に戻す、または汚れた作業ツリーの中を引っ張る
$ git pull (1) Auto-merging nitfol Merge made by recursive. nitfol | 20 +++++---- ... $ git reset --merge ORIG_HEAD (2)
作業ツリーにローカルの変更があっても、他のブランチの変更がそれらと重ならないことを知っていれば
git pull
と言っても問題ありません。マージの結果を調べたところ、他のブランチの変更が不十分であることがわかります。
git reset --hard ORIG_HEAD
を実行すると、元の場所に戻ることができますが、ローカルの変更は破棄されます。これは不要です。git reset --merge
はあなたのローカルな変更を保持します。
また参照してください https://stackoverflow.com/a/30345382/62169