master
次のコマンドでブランチを作成しようとしました。
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
Git が突然応答しなくなったとき。()
どうやらエスケープされていないことが原因のようです。今では、Git コマンドを実行しようとすると、同じエラーが発生します。
git:176: command not found: _of_ProductSearchQuery
git
コマンドを入力するたびに数字が増えていきます。
何が起こったのか説明してくれる人はいますか? また、どうすれば正常に戻りますか? そのブランチを削除したいのですが、どうすればよいですか?
ベストアンサー1
問題
何が起こったのか説明してくれる人はいますか? [...] そのブランチを削除したいのですが、Git が機能しません。
実行することで
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
zsh では、ブランチ を作成しませんでした。代わりに、、、という3 つのシェル関数git
を誤って定義しました。これらの関数branch
はSSLOC-201_Implement___str__
、パラメータ (存在する場合) を無視し、その本体は です。組み込みの zsh コマンド を呼び出して、既存のシェル関数をすべて一覧表示する_of_ProductSearchQuery
ことで、これが実際に起こったことを自分で確認できます。functions
$ functions
SSLOC-201_Implement___str__ () {
_of_ProductSearchQuery
}
branch () {
_of_ProductSearchQuery
}
git () {
_of_ProductSearchQuery
}
残念ながら、他の 2 つのシェル関数は問題はありませんが、「git」と呼ばれるシェル関数が本物の git
コマンドを隠蔽するようになりました。
$ 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
その数字は、単に環境変数の値に対応しており、
対話型シェルの現在の履歴イベント番号、つまり、
$HISTCMD
読み取りの原因となったコマンドのイベント番号。
を参照してくださいzsh マニュアル詳細については。
解決
では、どうすれば正常に戻れるのでしょうか?
問題のあるシェル関数 (ついでに、誤って作成した他の 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'
ただし、コマンドライン引数として使用する場合は、毎回そのような名前を引用符で囲む必要があるため、参照名では括弧を使用しないようにする必要があります。より一般的には、このような予期しない事態を防ぐために、シェルで特別な意味を持つ文字は (可能な限り) 避ける必要があります。
シンプルなブランチ名を使用する
とにかく、ブランチ名は短く簡潔にしておくべきです。
SSLOC-201_Implement___str__()_of_ProductSearchQuery
ブランチ名ではなく、コミット メッセージに属します。