2015-03-27 7 views
9

La cartella è costituita da file con nomi di file come abc~1, 123~1, a1d2~3.Impossibile aggiungere file con nome contenente tilde, '~' seguito da un numero

Quando faccio git add --all si dice,

$ git add --all 
error: Invalid path 'abc~1.png' 
error: unable to add abc~1.png to index 
fatal: adding files failed 

ho fatto una prova ed errore e ho trovato questo errore persiste solo quando il simbolo tilde è seguito da un numero.

Se la cartella è tracciata da git per la prima volta, anche gli altri file non vengono tracciati da Git.

$ git clean --dry-run 
Would remove Rest.png 
Would remove abc~1.png 

Si prega di aiuto come posso risolvere questo problema.

+0

Sei sicuro di voler aggiungere tutti quei file con ~ nei loro nomi? sembra come un editor generato da file temporanei per me .. –

+0

Sì, quelle immagini con nomi di file (abc ~ 1.png) sono usate nel codice java. – SabareeshSS

risposta

15

Questo è il risultato di una modifica apportata a msys Git in December 2014.

Sui file system di default di Windows, FAT e NTFS, i nomi di file in stile DOS 8.3 sono supportati per compatibilità con le versioni precedenti. Ciò significa che esistono più modi per fare riferimento allo stesso file. Ad esempio, è possibile accedere al file credential-cache - daemon.c anche tramite CREDEN ~ 1.C (a meno che un altro file sia già stato mappato al cosiddetto "nome breve", ovvero il nome breve esatto sia imprevedibile).

Dal momento che questa mappatura è imprevedibile, abbiamo bisogno di non consentire tali nomi di file su di Windows, e mentre a lui, anche noi escludiamo altri nomi di file compatibili con i sistemi Windows di file (ad esempio NUL, CON, ecc).

Utilizziamo la protezione core.protectNTFS introdotta nel commit precedente per rendere sicuro di impedire tali nomi di file solo quando appropriato.

Per disattivare questo comportamento, è possibile eseguire:

git config core.protectNTFS false 

Tuttavia, dal momento che il nuovo comportamento è lì per proteggere voi, io consiglierei di cambiare indietro dopo aver aggiunto i file:

git config core.protectNTFS true 

Disabilitare questa protezione solo quando è necessario aggiungere file con tilde nel nome o controllare i rami contenenti tali nomi di file.

In generale, si consiglia di evitare tali nomi di file se si lavora in ambiente in ambiente Windows.

+0

Grazie mille Anthony per il link e la soluzione fornita. – SabareeshSS

+0

Bella scoperta, +1. Può essere aggirato con un flag '-f' in' git add'? –

+1

@mu 無 No, non può. Saby, felice di poterti aiutare. Scommetto che non sarai l'unico colpito da questo. Ho proposto una modifica in modo che altri possano trovare più facilmente questa domanda. –

Problemi correlati