2012-03-17 8 views

答えて

3
git reset --hard HEAD^ 

このコマンドは、ブランチを直前のコミット、つまり取り消したいコミットの前のコミットにリセットします。あなたの仕事は変わりません。

コミットされたすべてがまだ緩いオブジェクトとして存在し、git reflogを使用してHEADが以前に指し示したバージョンに戻すことができることを覚えておいてください。これはgitで頻繁にコミットすることが非常に重要であるため、簡単に行ったすべての変更を元に戻すことができます。

+1

これらの答えは 'git reset --hard _some local commit_'を使ってリポジトリを見えるようにしますが、すべての情報を残しておいてください。ローカルリポジトリの間違ったリモートリポジトリからコミットするので、完全な "取り消し"はありません。 git gcはあなたのreflogにあるため(間違いを最近参照したので)間違ったコミットを削除することはありません。私は彼らが最終的に失効すると思うが、あなたがすぐにそれらを殺したい場合は、より深い手術が必要です。 – skierpage

+0

@skierpage正しい。あなたがそれらをきれいにするまで、コミットはまだそこにあります。これを行うにはさまざまな方法があります。最も簡単な方法は、リポジトリを再クローンすることです(あなたが今使っているものを捨てることができると仮定して) – ralphtheninja

3

一つの方法git reflogをお試しください。 Reflogでは、ほぼすべての操作を元に戻すことができます。あなたは汚れた作業コピーを持っていた場合は、この

git reset --hard [email protected]{1} 

よう 何かがしかし、それはすべての変更内容を消去するので、注意してくださいます。

3

を表示するには、この

$ git reset --hard latest-good-commit-hash 

使用git log --all(またはそれ以上のグラフィック、gitk --allを使用)を行うには

+0

ありがとうございました!私は追加してコミットしましたが、プッシュしませんでした。追加されてコミットされたものは、今はこれで乗り越えられませんでしたか? – Barka

+0

これは間違いなく、あなたが追加してコミットした場合、追加してコミットしたものは、これ以降もそこに残ります。 –

+0

@ user277498、 'reset'を行う前に' git reflog'の出力も見てください。 –

関連する問題