1189

git で最後のコミットをコミット解除するにはどうすればよいですか?

それは...ですか

git reset --hard HEAD

また

git reset --hard HEAD^

?

4

8 に答える 8

1875

「コミット解除」の意味がよくわからず、 を使用するかどうかわからない場合は、「以前の Git コミットに戻すgit reset」を参照してください。

よりよく理解しようとしている場合は、 「 "git reset" が何をするのか簡単な英語で説明できますか?git reset 」を参照してください。


を使用したいことがわかっている場合git resetでも、「コミット解除」の意味によって異なります。コミットの行為を元に戻したいだけで、他のすべてをそのままにしておく場合は、次を使用します。

git reset --soft HEAD^

コミットの行為とステージングしたすべてを元に戻したいが、作業ツリー (ファイル) はそのままにしておく場合:

git reset HEAD^

そして、実際にそれを完全に元に戻したい場合は、コミットされていない変更をすべて破棄し、すべてを以前のコミットにリセットします(元の質問が尋ねたように):

git reset --hard HEAD^

元の質問でもそれはそうでHEAD^はないと尋ねましたHEADHEAD現在のコミットを指します。通常、現在チェックアウトされているブランチの先端です。theは、任意の^commit 指定子に付けることができる表記で、「前のコミット」を意味します。そのため、マスター ブランチの先端の前のコミットと同様に、現在のコミットの前のコミットです。HEAD^master^

これは、コミットを指定するすべての方法を説明するgit-rev-parse ドキュメントの一部です(これ^は、多くの中で基本的なものにすぎません)。

于 2010-05-17T00:52:18.233 に答える
565

git reset --soft HEAD^変更された変更を作業ツリーに保持します。

git reset --hard HEAD^ あなたが行った変更を破棄します!!!

于 2010-05-16T22:29:42.220 に答える
360

元に戻したいコミットからの変更を保持するには

git reset --soft HEAD^

元に戻したいコミットからの変更を破棄するには

git reset --hard HEAD^

あなたも言うことができます

git reset --soft HEAD~2

2コミット戻る。

編集: charsi が述べたように、Windows を使用している場合は、HEAD またはコミット ハッシュを引用符で囲む必要があります。

git reset --soft "HEAD^"
git reset --soft "asdf"
于 2012-11-20T19:12:12.510 に答える
114

気をつけて ! reset --hardローカルの (コミットされていない) 変更も削除されます。

git reset --hard HEAD^

注: Windows を使用している場合は、HEAD^ を引用符で囲む必要があります。

git reset --hard "HEAD^"

作業を破棄せずにコミットを元に戻したい場合は、 --hardの代わりに --soft フラグを使用してください

git reset --soft HEAD^
于 2010-05-16T22:28:42.707 に答える
39

注意点 - ZSH を使用していてエラーが表示される場合

zsh: no matches found: HEAD^

エスケープする必要があります^

git reset --soft HEAD\^
于 2013-09-12T12:54:24.957 に答える
20

変更をまだプッシュしていない場合はgit reset --soft [Hash for one commit]、特定のコミットにロールバックするために使用します。--soft変更をロールバックし続けるように git に指示します (つまり、ファイルを変更済みとしてマークします)。--hardロールバックされる変更を削除するように git に指示します。

于 2014-10-22T21:07:30.913 に答える
4

それに注意してください。

ただし、 rebase コマンドを使用できます

git rebase -i HEAD~2

Aviが開き、コミットのある行を削除するだけです。また、正式版@で示された指示を読むことができますvi。このモードでは、いくつかのことが実行できます。

于 2014-08-12T14:44:29.487 に答える