2015-01-02 22 views
5

Voglio estrarre da un repository git in Windows che ha due directory, chiamate Foo e foo. Entrambe le cartelle hanno contenuti diversi.Lavorare in git con directory con lo stesso nome ma casi diversi in Windows

Poiché Windows non fa distinzione tra maiuscole e minuscole e non consente cartelle con lo stesso nome ma casi diversi, come si esegue il push sul repository git?

+0

Non so come funziona in pratica, non mi interessa provare, [ma c'è questo] (http://superuser.com/a/842670). NTFS stesso funziona bene con la distinzione tra maiuscole e minuscole, ma su tutte le impostazioni predefinite di Windows. – jthill

risposta

5

Risposta breve: non è possibile.

Poiché si tratta di una restrizione del file system sottostante (NTFS) e non solo di Windows, non si può davvero fare molto. Il file system non differisce tra il diverso involucro; quindi, anche se Git è in grado di tenere traccia delle differenze, non può comunicare queste differenze al file system.

Quello che forse potrebbe fare è creare commit parziali in cui basta aggiungere i file nella cartella corretta (è necessario rinominarlo in-tra per ottenere il diverso involucro). Ma sarà molto poco pratico.

La soluzione migliore è semplicemente non utilizzare più cartelle con un nome in conflitto. Anche su file system sensibili al maiuscolo/minuscolo, renderà le cose più confuse.

1

Come risposta alla risposta di poke, è necessario dividere queste directory in nomi diversi o unirle correttamente in una con lo stesso nome, a seconda delle esigenze, naturalmente. Non possono avere lo stesso nome in caso contrario e farlo funzionare su Windows (in ogni caso in modo chiaro e ovvio).

Ho finito per caso su questa stessa barca. Non sono sicuro di come, mentre usavo Windows tutto il tempo, ma a un certo punto ho cambiato il caso in una directory nel repository e alcuni file sono rimasti in una directory con il nome "vecchio" e alcuni in uno con il "nuovo" nome. Sulla mia macchina Windows erano tutti sotto il nuovo nome, ma ho trovato questo problema quando ho tirato il repository in Linux, e ho confermato la scissione quando ho guardato nel mio repository Assembla.

Per risolvere il problema, ho prima clonato l'unità in una posizione separata sul mio computer Windows. In questo modo, tutti i file erano nuovamente presenti in una directory, in quanto apparentemente le due directory vengono semplicemente unite. Poi ho rinominato quella directory problematica in "temp", (usando l'operazione "rinominare" TortoiseGit). Quindi, ho clonato il repository in un'altra posizione. A quel punto, le due directory erano in realtà divise in Windows. Ho avuto un "temp", oltre alla directory con il "vecchio" nome.

Come li volevo davvero in una directory (su tutte le piattaforme!), Ho spostato i file dalla vecchia directory denominata in "temp", quindi cancellato la "vecchia" directory. Successivamente, ho rinominato il temp (usando di nuovo l'operazione TortoiseGit "rinomina") con il nome che volevo tutto dentro, impegnato e spinto di nuovo. Alla fine, ho apportato le modifiche al mio repository originale, il mio linux, e ho cercato Assembla. Tutto era finalmente d'accordo, quindi ho cancellato quei cloni temporanei e l'ho chiamato un giorno.

+0

Ho anche avuto lo stesso problema. Una soluzione più semplice si trova qui: https://stackoverflow.com/questions/11183788/in-a-git-repository-how-to-properly-rename-a-directory –

+0

Cool. Grazie. – BuvinJ

Problemi correlati