重複の可能性:
Git:以前のコミットステータスに戻す
私は自分のコードにいくつかの変更を試みましたが、あまりにも多くのことを台無しにしました(あなたが疲れていて遅いときは決して機能しません)そして私は最後のコミットに戻りたいだけです。私はしませんでした、git add
またはgit commit
明らかに私がする場合はgit pull
すべてが最新です。
それが必要だと思ったgit checkout
のですが、うまくいきませんでした。
重複の可能性:
Git:以前のコミットステータスに戻す
私は自分のコードにいくつかの変更を試みましたが、あまりにも多くのことを台無しにしました(あなたが疲れていて遅いときは決して機能しません)そして私は最後のコミットに戻りたいだけです。私はしませんでした、git add
またはgit commit
明らかに私がする場合はgit pull
すべてが最新です。
それが必要だと思ったgit checkout
のですが、うまくいきませんでした。
言及されている答えreset --hard
はあなたが望むことをするでしょう(そしてあなたがするかもしれないししないかもしれない他のいくつかのことも)、しかしあなたはそれがあなたがcheckout
必要としたコマンドであると考えるのは正しかったです。問題は、checkout
2つの異なることを行うため、パス引数を指定する必要があることです。
git checkout .
リポジトリのルートから問題なく実行できます。
永続的ではありませんgit reset -hard
!
使ってください
git stash -u
代わりは!偶然にザッピングした作品がそこにある場合でも、それを取り戻すことができます。ブランチを作成して押し上げることを選択しない限り、これがリモートにプッシュされることはありません。
また、gitcheckoutを使用して同じことを実行できるという正しい方向に進んでいます。構文はgit checkout HEAD -- .
です。しかし、それはと同じ問題を抱えていgit reset --hard
ます。隠し場所に固執すれば、将来的に髪を失うことを防ぐことができます。
長い答え
上記の解決策は、すべての変更を元に戻します。しかし、あなたはいくつかの変更を取り除く方法を尋ねました。完全を期すためにこれを追加します。
これを行うには、次のことができます
git add file1 file2 file3
git stash save --patch
これで、表示したいものを正確に入力するように求められます...これまでの粒度のレベルまで下げてください。したがって、必要に応じて、1つのファイルに対するわずかな変更のみを安全に「拒否」できます。
git reset --hard
これにより、リポジトリ内の最後のコミットに対する追跡されていない変更がすべて削除されます。
git reset --hard
すべての作業を破棄しますが、おそらく次のことを行います。
git stash save "A bunch of stuff that didn't work"
いくつかの変更を回復したいという偶然の機会に。