21

私はコミットしましたが、今は私がすべて変更したものを見るのはちょっと難しいです. もちろん、git diff を実行することもできますが、IDE (PyCharm) が変更されたファイルを簡単に表示できるように、最後のコミットを元に戻し、すべての変更をそのまま維持したいと考えています。

最後のコミットを元に戻す (実際に削除する) 方法はありますが、変更をそのまま維持する方法はありますか? すべてのヒントは大歓迎です!

4

3 に答える 3

23

--soft他の 2 つの回答では を省略し、単純な(git reset @^またはgit reset HEAD^古いバージョンの git) を使用します。これはデフォルトでgit reset --mixed @^. 違いは、ソフト リセットではファイルがコミットのためにステージングされたままになることです。本当にコミットを元に戻したい場合は、おそらく変更のステージングも解除する必要があります。これがデフォルトの動作です。一般的なケースでは、これはソフト リセットよりもはるかに便利です。これが、混合がデフォルトである理由です。

于 2014-03-12T15:39:36.130 に答える
16

これは さんの仕事のようですねgit reset --soft。そのヘルプ ( git help reset) は次のように言っています。

--soft
    Does not touch the index file nor the working tree at all
    (but resets the head to <commit>, just like all modes do).
    This leaves all your changed files "Changes to be
    committed", as git status would put it.

したがって、コミットは元に戻されますが、ファイルは以前と同じように見えます。インデックスには何もステージングされません。

于 2014-03-12T15:10:05.853 に答える
11

Peter が言うように、git reset --softインデックスと作業ディレクトリの両方をそのままにしておく必要があります。

あなたの場合、1 つのコミットに戻りたい場合git reset --soft HEAD~は、現在の HEAD の親コミットでブランチを指すために使用できます。インデックスと作業ディレクトリには、変更されたファイルが引き続き含まれます。

リセットに関する便利な記事: http://git-scm.com/blog/2011/07/11/reset.html

于 2014-03-12T15:31:01.140 に答える