BETA

PowerShell で Git の reset/stash などを使う際に履歴を指定する方法

投稿日:2020-07-27
最終更新:2020-10-04

TL; DR

中括弧で表記する文字列は ' で囲みましょう。

はじめに

みなさんおなじみ、履歴を戻すコマンドは、下記の通りです。

git reset [email protected]{0}  

また、スタッシュを適用するコマンドは、下記の通りです。

git stash pop [email protected]{0}  

しかし、 PowerShell で上記を実行しようとすると、次のエラーが発生し、履歴リセット/スタッシュ適用できません。

error: unknown switch `e'  

解決策

PoserShell では、中括弧に特別な意味があるため(スクリプトブロックと呼ぶらしい)、中括弧内の文字列をコマンドとして実行してしまうからみたいです。

about_Script_Blocks - PowerShell | Microsoft Docs

' で囲み文字列化することで、実行できます。

git reset '[email protected]{0}'  
git stash pop '[email protected]{0}'  

または、中括弧エスケープ処理をすることでも可能です。
PowerShell のエスケープシーケンスは ` ですよね。

git reset [email protected]`{0`}  

git reset [email protected]{1} results in error · Issue #106 · dahlbyk/posh-git

おわりに

エラー文だけでは理解できず、地味に苦労しました。
PowerShell は めんどくさい 奥が深いですね。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

いろいろ落ちている

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう