6

重複の可能性:
Git:以前のコミットステータスに戻す

私は自分のコードにいくつかの変更を試みましたが、あまりにも多くのことを台無しにしました(あなたが疲れていて遅いときは決して機能しません)そして私は最後のコミットに戻りたいだけです。私はしませんでした、git addまたはgit commit明らかに私がする場合はgit pullすべてが最新です。

それが必要だと思ったgit checkoutのですが、うまくいきませんでした。

4

4 に答える 4

12

言及されている答えreset --hardはあなたが望むことをするでしょう(そしてあなたがするかもしれないししないかもしれない他のいくつかのことも)、しかしあなたはそれがあなたがcheckout必要としたコマンドであると考えるのは正しかったです。問題は、checkout2つの異なることを行うため、パス引数を指定する必要があることです。

git checkout .

リポジトリのルートから問題なく実行できます。

于 2012-06-29T18:36:10.293 に答える
7

永続的ではありませんgit reset -hard

使ってください

git stash -u 

代わりは!偶然にザッピングした作品がそこにある場合でも、それを取り戻すことができます。ブランチを作成して押し上げることを選択しない限り、これがリモートにプッシュされることはありません。

また、gitcheckoutを使用して同じことを実行できるという正しい方向に進んでいます。構文はgit checkout HEAD -- .です。しかし、それはと同じ問題を抱えていgit reset --hardます。隠し場所に固執すれば、将来的に髪を失うことを防ぐことができます。

長い答え

上記の解決策は、すべての変更を元に戻します。しかし、あなたはいくつかの変更を取り除く方法を尋ねました。完全を期すためにこれを追加します。

これを行うには、次のことができます

git add file1 file2 file3
git stash save --patch

これで、表示したいものを正確に入力するように求められます...これまでの粒度のレベルまで下げてください。したがって、必要に応じて、1つのファイルに対するわずかな変更のみを安全に「拒否」できます。

于 2012-06-29T18:34:17.600 に答える
2

git reset --hardこれにより、リポジトリ内の最後のコミットに対する追跡されていない変更がすべて削除されます。

于 2012-06-29T18:30:41.703 に答える
2

git reset --hardすべての作業を破棄しますが、おそらく次のことを行います。

git stash save "A bunch of stuff that didn't work"

いくつかの変更を回復したいという偶然の機会に。

于 2012-06-29T18:34:13.950 に答える