[解決済み] 複雑なGitブランチ名がすべてのGitコマンドを破壊した
質問
からのブランチを作成しようとしていました。
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で実行します。
ブランチを作成していない
. その代わり、誤って3つの
シェル関数
という
git
,
branch
および
SSLOC-201_Implement___str__
であり,パラメータを無視し,ボディが
_of_ProductSearchQuery
. という zsh 組み込みのコマンドを実行することで、これが実際に起こったことであることを自分で確認できます。
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
は、ブランチ名ではなく、コミットメッセージに含まれます。
関連
-
[解決済み】マージ後のコミットでGitエラー - fatal: マージ中に部分コミットができない
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Git ですべてのリモートブランチをクローンする方法
-
[解決済み] まだプッシュされていない Git マージを元に戻す
-
[解決済み] Git で現在のブランチ名を取得するには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】既存のGitブランチをリモートブランチに追従させる?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] git pull リモートブランチがリモートの参照先を見つけることができない
-
[解決済み】マージの競合が発生した git stash pop の取り消し
-
[解決済み】GitHubで空のブランチを作成する
-
git commits with an error: 更新が拒否されました。現在のブランチの先端が、このブランチより後ろにあるためです。
-
git commit リモートエラー [rejected] master -> master (フェッチファースト)
-
[解決済み] 複数のgitコミットを元に戻すには?
-
[解決済み] Git pull - マージする前に移動または削除してください。
-
[解決済み] ブラウンアウトの一環として、パスワード認証が一時的に無効になっています。代わりに個人用アクセストークンを使用してください[重複]。
-
[解決済み] 警告: リモート HEAD は存在しない参照元を参照しているため、チェックアウトできません。
-
[解決済み] GitのFETCH_HEADとはどういう意味ですか?