52

過去の特定のコミットからのファイルを見たいと思っていますが、git reset --hardそのコミットを超えてコミットを見ることができなくなります。(ファイルの状態とともに)コミットに戻り、ファイルを確認して、再び現在に移動するにはどうすればよいですか?

4

1 に答える 1

78

現在のブランチがmasterで、古いコミットがa1b2c3であるとすると、作業ツリー内のすべてのファイルを次の方法で古いコミットに戻すことができます。

git checkout a1b2c3

...そしてに戻るmaster

git checkout master

git履歴を飛び回るこの方法(つまり、ハッシュまたはSHA1sumとも呼ばれるオブジェクト名でコミットをチェックアウトする)はgit bisect、たとえば、ブランチを移動しないため、以前の適切なコミットを見つけるのに非常に役立ちます。 。

覚えておくべきことの1つは、これを行うと、混乱を招く可能性のある警告が表示されることです。オブジェクト名(a1b2c3)からコミットをチェックアウトすると、「切り離されたHEAD」と呼ばれる状態になりますHEAD。現在のブランチを表し、代わりに特定のコミットを直接指します。これは心配する必要はありません-履歴内を移動するのに非常に便利です-しかし、HEADデタッチされたときに新しいコミットを作成した場合、それらはブランチを前方に移動しないことを意味します。


fork0は、潜在的に有用なショートカットの下のコメントで指摘します。これは、前のブランチをチェックアウトするか、指摘されたgit checkout -ものをコミットします。HEAD

于 2012-08-16T13:09:40.593 に答える