Karakter mana yang ilegal dalam nama cabang?

Jawaban:

299

Aturan penamaan untuk refname:

Git menerapkan aturan berikut tentang bagaimana referensi nama:

  1. Mereka dapat menyertakan slash /untuk pengelompokan hierarki (direktori), tetapi tidak ada komponen yang dipisahkan dengan slash yang dapat dimulai dengan titik .atau diakhiri dengan urutan .lock.

  2. Mereka harus mengandung setidaknya satu /. Ini memberlakukan keberadaan kategori seperti heads/, tags/dll. Tetapi nama sebenarnya tidak dibatasi. Jika --allow-onelevelopsi ini digunakan, aturan ini dihapuskan.

  3. Mereka tidak dapat memiliki dua titik berturut-turut di ..mana saja.

  4. Mereka tidak dapat memiliki karakter kontrol ASCII (yaitu byte yang nilainya lebih rendah dari \040, atau \177 DEL), ruang, tilde ~, tanda sisipan ^, atau titik dua di :mana saja.

  5. Mereka tidak dapat memiliki tanda tanya ?, tanda bintang *, atau braket terbuka di [mana saja. Lihat --refspec-patternopsi di bawah untuk pengecualian pada aturan ini.

  6. Mereka tidak dapat memulai atau mengakhiri dengan garis miring /atau mengandung banyak garis miring berurutan (lihat --normalizeopsi di bawah untuk pengecualian pada aturan ini)

  7. Mereka tidak bisa diakhiri dengan titik ..

  8. Mereka tidak dapat berisi urutan @{.

  9. Mereka tidak bisa menjadi karakter tunggal @.

  10. Mereka tidak dapat mengandung a \.

Selain itu, aturan tambahan untuk nama cabang:

  1. Mereka tidak dapat memulai dengan tanda hubung -

Berkat Jakub Narębski , halaman manual untuk git check-ref-formatmemiliki lebih banyak detail.

Manoj Govindan
sumber
9
Layak disebutkan bahwa '>' diizinkan, tetapi untuk beralih ke cabang itu di bash, ia harus melarikan diri dengan '' 'sebelumnya
igniteflow
3
Saya bingung tentang aturan # 2 di halaman manual yang Anda tautkan. Dikatakan "2. Mereka harus mengandung setidaknya satu /." Tolong jelaskan? Tidak ada cabang saya yang memiliki /nama.
chharvey
7
@chharvey: sebuah "cabang" tanpa huruf pr /telah heads/ditambahkan padanya "secara otomatis". Sebenarnya: tanpa a /, belum jelas apakah itu cabang atau tag atau sesuatu yang lain ...
Robert Siemer
1
@DMTintner: Koma diizinkan.
Robert Siemer
3
di sini adalah ekspresi reguler untuk ini /^[\./[|\.\.|@{#[#/\.[$|^@$|[~^:\x00-\x20\x7F\s?* [\\] / g ini akan menemukan karakter yang tidak valid sehingga Anda dapat menggantinya dengan karakter '-' atau apa pun yang Anda inginkan
Tony Brix