git で最後のコミットをコミット解除するにはどうすればよいですか?
それは...ですか
git reset --hard HEAD
また
git reset --hard HEAD^
?
「コミット解除」の意味がよくわからず、 を使用するかどうかわからない場合は、「以前の Git コミットに戻すgit reset
」を参照してください。
よりよく理解しようとしている場合は、 「 "git reset" が何をするのか簡単な英語で説明できますか?git reset
」を参照してください。
を使用したいことがわかっている場合git reset
でも、「コミット解除」の意味によって異なります。コミットの行為を元に戻したいだけで、他のすべてをそのままにしておく場合は、次を使用します。
git reset --soft HEAD^
コミットの行為とステージングしたすべてを元に戻したいが、作業ツリー (ファイル) はそのままにしておく場合:
git reset HEAD^
そして、実際にそれを完全に元に戻したい場合は、コミットされていない変更をすべて破棄し、すべてを以前のコミットにリセットします(元の質問が尋ねたように):
git reset --hard HEAD^
元の質問でもそれはそうでHEAD^
はないと尋ねましたHEAD
。HEAD
現在のコミットを指します。通常、現在チェックアウトされているブランチの先端です。theは、任意の^
commit 指定子に付けることができる表記で、「前のコミット」を意味します。そのため、マスター ブランチの先端の前のコミットと同様に、現在のコミットの前のコミットです。HEAD^
master^
これは、コミットを指定するすべての方法を説明するgit-rev-parse ドキュメントの一部です(これ^
は、多くの中で基本的なものにすぎません)。
git reset --soft HEAD^
変更された変更を作業ツリーに保持します。
git reset --hard HEAD^
あなたが行った変更を破棄します!!!
元に戻したいコミットからの変更を保持するには
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"
気をつけて ! reset --hard
ローカルの (コミットされていない) 変更も削除されます。
git reset --hard HEAD^
注: Windows を使用している場合は、HEAD^ を引用符で囲む必要があります。
git reset --hard "HEAD^"
作業を破棄せずにコミットを元に戻したい場合は、 --hardの代わりに --soft フラグを使用してください
git reset --soft HEAD^
注意点 - ZSH を使用していてエラーが表示される場合
zsh: no matches found: HEAD^
エスケープする必要があります^
git reset --soft HEAD\^
変更をまだプッシュしていない場合はgit reset --soft [Hash for one commit]
、特定のコミットにロールバックするために使用します。--soft
変更をロールバックし続けるように git に指示します (つまり、ファイルを変更済みとしてマークします)。--hard
ロールバックされる変更を削除するように git に指示します。
それに注意してください。
ただし、 rebase コマンドを使用できます
git rebase -i HEAD~2
Avi
が開き、コミットのある行を削除するだけです。また、正式版@で示された指示を読むことができますvi
。このモードでは、いくつかのことが実行できます。