次のコマンドでmaster
からブランチを作成しようとしましたが、
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
gitが突然応答を停止したとき。エスケープされていない()
のせいだと思われます。これで、Gitコマンドを実行しようとすると、同じエラーが表示されます。
git:176: command not found: _of_ProductSearchQuery
git
の後の数字は、コマンドを入力するたびに増加します。
誰が何が起こったのか説明できますか?そして、どのように通常に戻りますか?そのブランチを削除したいのですが、どうすればいいですか?
誰が何が起こったのか説明できますか? [...]そのブランチを削除できるようにしたいのですが、Gitは動作しません。
実行することにより
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
zshでは、ブランチを作成しませんでした。その代わりに、誤ってgit
、branch
、およびSSLOC-201_Implement___str__
と呼ばれる3つのShell functionsを定義しました。これらはパラメーター(存在する場合)を無視し、本体は_of_ProductSearchQuery
です。 functions
と呼ばれる組み込みのzshコマンドを呼び出すことで、これが実際に起こったことを自分で確認できます。
$ functions
SSLOC-201_Implement___str__ () {
_of_ProductSearchQuery
}
branch () {
_of_ProductSearchQuery
}
git () {
_of_ProductSearchQuery
}
残念ながら、他の2つのシェル関数は問題ありませんが、「git」と呼ばれるシェル関数はbona fidegit
コマンドを隠します!
$ which git
git () {
_of_ProductSearchQuery
}
# but the real "git" is a binary file that lives in /usr/local/bin/git (or some similar path)
したがって、その後エラーが発生します
command not found: _of_ProductSearchQuery
gitコマンドを実行しようとするたびにgit log
、git status
など(もちろん、_of_ProductSearchQuery
と呼ばれるコマンドが存在しないと仮定)。
[...]同じエラーが表示されます。
git:176: command not found: _of_ProductSearchQuery
(
git
の後の数字は、コマンドを入力するたびに増加します)
その番号は、保持する環境変数であるHISTCMD
の値に単に対応します。
[t]インタラクティブシェルの現在の履歴イベント番号、言い換えると、
$HISTCMD
の読み取りを引き起こしたコマンドのイベント番号。
詳細については、 zsh manual を参照してください。
そして、どのように通常に戻りますか?
問題のあるシェル関数(および誤って作成した他の2つ)を削除するだけです:
unset -f git
unset -f branch SSLOC-201_Implement___str__
その後、すべてがうまくいくはずです。
unset
もシャドウされている場合はどうなりますか?!良い質問 ! Wumpus W. Wumbleyの素晴らしいコメント 以下を参照してください。
はい、コメントで指摘されているように、括弧はGitブランチ名の有効な文字です。名前を適切に引用する必要があります。
$ git branch 'foo()bar'
$ git branch
foo()bar
* master
$ git checkout 'foo()bar'
Switched to branch 'foo()bar'
ただし、そのような名前を引用符で囲む必要があるevery single timeコマンドライン引数として使用する場合、参照名の括弧を避ける必要があります。より一般的には、このような驚きを防ぐために、シェルで特別な意味を持つ文字を(可能な限り)避けるべきです。
とにかくブランチ名は短くて甘いものにしてください。のような長い説明
SSLOC-201_Implement ___ str __()_ of_ProductSearchQuery
ブランチ名ではなく、コミットメッセージに属します。