Questo tipo di problema è spesso causato dal tentativo di estrarre da un repository che ha due nomi che differiscono solo in caso. Se sei su FAT, NTFS in modalità maiuscole/minuscole (essenzialmente, ogni volta che viene utilizzato in Windows), o HFS + in modalità maiuscole e minuscole, e hai due file "foobar" e "FOOBAR", Git vedrà due distinti file, ma il filesystem ne vedrà solo uno, che causerà tutti i tipi di problemi. Git effettuerà il checkout, per esempio "FOOBAR", e quindi eseguirà il checkout di "foobar", che il filesystem vede semplicemente sostituendo il contenuto di "FOOBAR" ma lasciandolo sul posto. Ora a Git, sembra che "FOOBAR" sia stato sostituito con il contenuto di "foobar", e "foobar" sia sparito.
Ci sono due diverse manifestazioni di questo problema di base. Uno è quando il repository contiene effettivamente due file che differiscono solo per caso. In questo caso, è necessario lavorare su un file system sensibile al maiuscolo/minuscolo, o sarà necessario modificare il repository per assicurarsi che non si verifichino collisioni di questo tipo; un file system senza distinzione tra maiuscole e minuscole non può semplicemente memorizzare il contenuto di questo repository.
Un caso diverso che è possibile aggirare è quando si verifica un cambio di nome che cambia il caso del file. Supponiamo, ad esempio, che il repository Git contenga un nome da "ESEMPIO" ad "esempio". Prima che Git controlli la nuova versione, cercherà di verificare che non sovrascriva alcun file esistente sul disco. Siccome pensa che "esempio" sia un nuovo nome di file, chiederà al filesystem se esiste, e il filesystem vedrà "ESEMPIO" e dirà di sì, quindi Git rifiuterà di controllare la nuova versione poiché pensa che sarà sovrascritta file non tracciati. In questo caso, se non hai modifiche locali che ti interessano, un semplice git reset --hard <revision-to-checkout>
sarà in genere sufficiente per superare il problema e la nuova revisione.Basta provare a ricordare di non rinominare i file con altri nomi che differiscono solo nel caso in cui si è in un file system senza distinzione tra maiuscole e minuscole, in quanto causerà problemi come questo.
fonte
2010-01-03 15:59:11
Vedere se la spiegazione in http://git.or.cz/gitwiki/GitFaq aiuta. –
Ditto "* L'unica cosa che sembra funzionare è l'eliminazione del file incriminato e provare nuovamente a git pull. *". Per me, almeno un file non era in git; era assegnato a una regola jolly. Non sono sicuro del perché fossero bloccanti, però. – ruffin