Saya mencoba membuat cabang dari master
dengan perintah berikut,
git branch SSLOC-201_Implement___str__()_of_ProductSearchQuery
ketika Git tiba-tiba berhenti merespons. Saya menduga yang tidak melarikan diri ()
yang harus disalahkan, entah bagaimana. Sekarang, setiap kali saya mencoba menjalankan perintah Git, saya mendapatkan kesalahan yang sama:
git:176: command not found: _of_ProductSearchQuery
dengan angka setelah git
bertambah setiap kali saya mengetikkan perintah.
Adakah yang bisa menjelaskan apa yang terjadi? Dan bagaimana cara saya kembali normal? Saya ingin menghapus cabang itu, tetapi bagaimana saya bisa melakukannya?
git
zsh
git-branch
parentheses
ruipacheco
sumber
sumber
git branch "SSLOC-201_Implement___str__()_of_ProductSearchQuery"
berfungsi dengan baik.Jawaban:
Masalah
Dengan berlari
di zsh, Anda tidak membuat cabang apa pun . Sebaliknya, Anda secara tidak sengaja ditetapkan tiga fungsi shell , yang disebut
git
,branch
danSSLOC-201_Implement___str__
, yang mengabaikan parameter mereka (jika ada) dan yang tubuhnya_of_ProductSearchQuery
. Anda dapat memeriksa sendiri bahwa ini memang yang terjadi, dengan menjalankan perintah builtin zsh yang disebutfunctions
, yang mencantumkan semua fungsi shell yang ada:Sayangnya, meskipun dua fungsi shell lainnya tidak bermasalah, fungsi shell yang disebut "git" sekarang membayangi perintah bonafide
git
!Karena itu, Anda selanjutnya akan mendapatkan kesalahan
setiap kali Anda mencoba menjalankan perintah Git, mis
git log
.git status
, dll. (dengan asumsi, tentu saja, tidak ada perintah yang dipanggil_of_ProductSearchQuery
ada).Catatan samping
Angka itu hanya sesuai dengan nilai
HISTCMD
, variabel lingkungan yang berlakuLihat manual zsh untuk detail lebih lanjut.
Larutan
Hapus saja fungsi shell yang bermasalah (dan dua lainnya yang Anda buat secara tidak sengaja, saat Anda melakukannya):
Maka semuanya harus baik-baik saja.
Bagaimana jika
unset
dibayangi juga ?!Pertanyaan bagus ! Saya merujuk Anda pada komentar luar biasa Wumpus W. Wumbley di bawah ini.
Kiat penamaan cabang
Hindari karakter shell khusus
Ya, sebagaimana ditunjukkan dalam komentar, tanda kurung adalah karakter yang valid dalam nama cabang Git; Anda hanya perlu mengutip namanya secara tepat, mis
Namun, kebutuhan untuk mengutip nama-nama tersebut setiap kali ketika digunakan sebagai argumen baris perintah harus meyakinkan Anda untuk menghindari tanda kurung dalam nama referensi. Secara umum, Anda harus (sebanyak mungkin) menghindari karakter yang memiliki arti khusus dalam shell, untuk mencegah kejutan seperti ini.
Gunakan nama cabang sederhana
Anda tetap harus menjaga nama cabang Anda pendek dan manis. Seperti deskripsi panjang
termasuk dalam pesan komit, bukan dalam nama cabang.
sumber
Switched to a new branch 'abcd-()-foo'
unset
membuat bayangan dengan menciptakan fungsi shell yang disebut? (apakah ini mungkin?)zsh
.builtin unset
. Jikabuiltin
danunset
keduanya telah dibayangi oleh fungsi, makaunfunction
. Jika itu hilang jugaunhash -f
,. Jika keempatnya hilang, lalu hidupkan kembali shell.