2010-11-10 19 views
37

Sono in inglese americano   X 10.6.4 e provare a memorizzare file con caratteri asiatici nel suo nome in un repository Git.Come gestire i caratteri asiatici nei nomi di file in Git su OS X

OK, creiamo un file in un albero di lavoro di Git:

$ touch どうもありがとうミスターロボット.txt 

Git sta mostrando come ottale escape UTF-8 modulo:

$ git version 
git version 1.7.3.1 
$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt" 
nothing added to commit but untracked files present (use "git add" to track) 

Purtroppo, io non sono in grado di aggiungerlo al repository Git:

$ git add どうもありがとうミスターロボット.txt 
$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt" 
nothing added to commit but untracked files present (use "git add" to track) 

Git ha semplicemente ignorato questo file.

usando i caratteri jolly funzionano:

$ git add *.txt 
$ git status 
# On branch master 
# 
# Initial commit 
# 
# Changes to be committed: 
# (use "git rm --cached <file>..." to unstage) 
# 
# new file: "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt" 
# 

ma voglio richiamare il comando Git da una domanda di un nome di file specifico. Non ho la possibilità di inventare modelli jolly che corrispondono esattamente a questo file, ma nessun altro.

Si tratta di un bug noto di Git o di me che non utilizza Git correttamente?

+3

Penso che questo sia un bug noto tra git e OSX: http://thread.gmane.org/gmane.comp.version-control.git/70688 –

+0

Non penso che sia correlato alla composizione/decomposizione personaggi come le dieresi tedesche. – Mot

+0

@mklhmnn: sei sicuro che nessuno dei caratteri nel tuo esempio non abbia moduli decomposti e precomposti? – JeremyP

risposta

52

Git riporta i caratteri non ascii per impostazione predefinita, non solo quelli asiatici. C'è un'opzione per disabilitare questo comportamento di quotatura.

È possibile disattivare utilizzando il seguente comando:

git config --global core.quotepath false 

O, in alternativa, con l'aggiunta del seguente frammento di file di configurazione git ($ HOME/.gitconfig solito)

[core] 
    quotepath = false 

Dopo questo, git dovrebbe mostrare i tuoi nomi di file esattamente come sono.

Per quanto riguarda l'altro problema, git non aggiunge un file con caratteri asiatici, posso solo supporre che abbia a che fare con la codifica che git usa non è la stessa codifica utilizzata dal terminale. Spero che qualcun altro possa entrare e spiegare quel po '.

+0

Nei miei test limitati (usando Git 1.7.3.2 su Ubuntu), una volta disabilitato 'core.quotepath', git mostrerebbe i nomi dei file come previsto. Inoltre, anche con 'core.quotepath' abilitato, l'aggiunta esplicita aggiorna l'indice come previsto, quindi il problema originale potrebbe essere stato un bug che è stato corretto nelle versioni più recenti di Git. –

+0

Sai se questa quotazione può essere disabilitata impostando una variabile di ambiente o passando un parametro da riga di comando a Git? – Mot

+1

Anche se il mio problema è leggermente diverso, un personaggio accennato, non un asiatico, ma questo consiglio non ha funzionato per me. –

Problemi correlati