git reset –hard HEAD@{ } error: unknown switch `e’

WindowsでPowerShellを使っていたらこのエラーが出ました。 PowerShellでは鍵括弧”{ }”は特別な意味がある為、error: unknown switch `e’  エラーになるようです。

解決方法

以下を使用する。 HEAD@{n}の部分をシングルクオーテーションで括る。 これだけです。 {7}の’7’は、git reflogで確認して、戻りたい番号に書き換えてください。

//PowerShellの場合
git reset --hard 'HEAD@{7}'

https://github.com/dahlbyk/posh-git/issues/106 に書いてありました。

『git reset –hard error: unknown switch `e’』でググってもあまり出てこなかったので載せました。

エラー表示例

シングルクオーテーションで括っていなかったので以下の様なメッセージが出て来て焦りました。

PS C:\Users\xxxxx\Documents\Nodejs\Test\vscode-ext-ichiri> git reset --hard HEAD@{2}
error: unknown switch `e'
   or: git reset [-q] [<tree-ish>] [--] <pathspec>...
   or: git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<tree-ish>]
   or: git reset --patch [<tree-ish>] [--] [<pathspec>...]
   or: DEPRECATED: git reset [-q] [--stdin [-z]] [<tree-ish>]

    -q, --quiet           be quiet, only report errors
    --no-refresh          skip refreshing the index after reset
    --mixed               reset HEAD and index
    --soft                reset only HEAD
    --hard                reset HEAD, index and working tree
    --merge               reset HEAD, index and working tree
    --keep                reset HEAD but keep local changes
    --recurse-submodules[=<reset>]
                          control recursive updating of submodules
    -p, --patch           select hunks interactively
    -N, --intent-to-add   record only the fact that removed paths will be added later
    --pathspec-from-file <file>
                          read pathspec from file
    --pathspec-file-nul   with --pathspec-from-file, pathspec elements are separated with NUL character
    -z                    DEPRECATED (use --pathspec-file-nul instead): paths are separated with NUL character
    --stdin               DEPRECATED (use --pathspec-from-file=- instead): read paths from <stdin>

おまけ git reflog

reflogにすると履歴が出てきます。

gitも初心者なので、メッセージ書換とかしてrebaseしたら編集していたソースコード迄大分前に戻されてしまいました。 HEAD@{7}に戻れてよかった。

PS C:\Users\xxxxx\Documents\Nodejs\Test\vscode-ext-ichiri> git reflog
801185b (HEAD -> main) HEAD@{0}: rebase (skip) (finish): returning to refs/heads/main
801185b (HEAD -> main) HEAD@{1}: rebase (edit): 1.ボタンを追加
fe58dab HEAD@{2}: rebase (start): checkout HEAD~3
fe0d749 HEAD@{3}: rebase (continue) (finish): returning to refs/heads/main
fe0d749 HEAD@{4}: rebase: fast-forward
5b70706 HEAD@{5}: rebase: fast-forward
b46ea0b HEAD@{6}: rebase (start): checkout HEAD~2
fe0d749 HEAD@{7}: commit: 1. context.subscriptions.pushのやり方 (push関数内と変数に入れてから)
5b70706 HEAD@{8}: commit: 1.ボタンを追加
b46ea0b HEAD@{9}: revert: Revert "1.ボタンを追加"
fe58dab HEAD@{10}: commit (initial): 1.ボタンを追加
//git reset --hard 'HEAD@{7}'した後
PS C:\Users\xxxxx\Documents\Nodejs\Test\vscode-ext-ichiri> git reflog
fe0d749 (HEAD -> main) HEAD@{0}: reset: moving to HEAD@{7}
801185b HEAD@{1}: rebase (skip) (finish): returning to refs/heads/main
801185b HEAD@{2}: rebase (edit): 1.ボタンを追加
fe58dab HEAD@{3}: rebase (start): checkout HEAD~3
fe0d749 (HEAD -> main) HEAD@{4}: rebase (continue) (finish): returning to refs/heads/main
fe0d749 (HEAD -> main) HEAD@{5}: rebase: fast-forward
5b70706 HEAD@{6}: rebase: fast-forward
b46ea0b HEAD@{7}: rebase (start): checkout HEAD~2
fe0d749 (HEAD -> main) HEAD@{8}: commit: 1. context.subscriptions.pushのやり方 (push関数内と変数に入れてから)
5b70706 HEAD@{9}: commit: 1.ボタンを追加
b46ea0b HEAD@{10}: revert: Revert "1.ボタンを追加"
fe58dab HEAD@{11}: commit (initial): 1.ボタンを追加

コメント